Java 我的JFrame窗口不会出现
我的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
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();
}
}