Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的JFrame窗口不会出现_Java_Swing - Fatal编程技术网

Java 我的JFrame窗口不会出现

Java 我的JFrame窗口不会出现,java,swing,Java,Swing,我的JFrame窗口不会出现,但是,根据我一直在看的教程,我已经在现场做了所有的事情,但是什么都没有发生。它甚至没有给我一个错误,这让事情变得更糟。代码如下: import javax.swing.*; import java.awt.*; public class Window { public class Window { public void newWindow() { JFrame frame = new JFrame(); fram

我的JFrame窗口不会出现,但是,根据我一直在看的教程,我已经在现场做了所有的事情,但是什么都没有发生。它甚至没有给我一个错误,这让事情变得更糟。代码如下:

import javax.swing.*;
import java.awt.*;
public class Window {

    public class Window {

    public void newWindow() {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);

        JLabel label = new JLabel("I am a star!  A beautiful shining star!", SwingConstants.CENTER);
        frame.getContentPane().add(label);


        frame.setVisible(true);
    }
}

这是第二个类,主类正确地链接到这个类,我看到,您没有设置JFrame的大小。试试看

frame.setSize(500, 500);
默认情况下,JFrame使用命名的BorderLayout。要查看添加到框架的构件,应参考其。然而,这里最简单的选择是使用。您还应该使用JFrame的方法,根据Oracle的说法:

使此窗口的大小适合其子组件的首选大小和布局。如果任意一个尺寸小于上一次调用setMinimumSize方法指定的最小尺寸,则生成的窗口宽度和高度将自动放大

因此,这应该适用于您:

import javax.swing.*;
import java.awt.*;
public class Window {

    public void newWindow() {
        JFrame frame = new JFrame();
        frame.getContentPane().setLayout(new FlowLayout()); // specify the layout manager
        frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);

        JLabel label = new JLabel("I am a star!  A beautiful shining star!", SwingConstants.CENTER);
        frame.getContentPane().add(label);

        frame.pack(); // handles sizing of the window
        frame.setVisible(true);
    }
}

请注意,我删除了重复的公共类窗口声明,这可能是您根本看不到框架的原因。如果它仍然不适用于您,我认为您没有调用newWindow方法。如果只需调用“新建窗口”即可显示窗口;,然后您应该将public void newWindow更改为public Window。

请显示另一个类,即正确链接到此类的类。请显示如何调用此类中的代码。我猜你的主要方法是在另一个类中,你的错误也在那个类中。考虑提供一个演示你的问题的。这将减少混乱和更好的响应代码示例看起来…奇怪…你能验证这正是你所拥有的吗…为什么窗口嵌套在窗口中?哦,文件名是Window.java,我默认方法名为WindowJFrame,使用BorderLayout,已经说过,即使没有pack,当框架变得可见时,OP应该仍然是框架边框,但是他们声明他们什么也看不到……谢谢,我刚刚意识到当我在Eclipse中阅读我的代码时,我注意到我实际上使用了newWindow作为方法,但只是没有把它放在这里。我想我忘了。还有一件事,我甚至不知道.setLayout是个东西。我想这就是我错的地方。摆脱空虚,嗯?我试试看。这是主要的方法:这段代码不能工作。您正在调用未定义的方法包,请删除第二个类声明。我不喜欢操纵其他人的代码,希望修复缩进。所以我别无选择。如果问题解决了,我总是回复否决票:@Tom you's right:,我当时很匆忙,所以我没有注意到这一点。抱歉,匆忙回答对任何人都没有好处。我喜欢我去科罗拉多矿业学校的网站,复制并粘贴他们那里的代码,但仍然什么也没有出现。
import javax.swing.*;
import java.awt.*;

public class Window {
public void newWindow() {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JLabel label = new JLabel("I am a star!  A beautiful shining star!", SwingConstants.CENTER);
    frame.getContentPane().add(label);
    frame.setVisible(true);
    frame.pack();
  }
}