最近我扩展JFrame的每一个应用都无法真正显示该帧。该程序将运行,然后将在大约8秒后终止,而不显示任何内容且没有错误消息。对于我过去制作的所有节目以及任何新节目,都会出现这种情况。
出于测试目的,我使用的是oracle文档中的基本示例。
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class test extends JFrame{
public static void main(String[] args){
//1. Create the frame.
JFrame frame = new JFrame("FrameDemo");
//2. Optional: What happens when the frame closes?
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//3. Create components and put them in the frame.
JLabel emptyLabel = new JLabel();
frame.getContentPane().add(emptyLabel, BorderLayout.CENTER);
//4. Size the frame.
frame.pack();
//5. Show it.
frame.setVisible(true);
}
}
我正在使用eclipse,而且我已经尝试过切换工作场所。
我查看了现有的帖子,发现由于编码错误而没有发现任何内容。
我该如何解决这个问题?
编辑:程序在此行之后不会从System.out.println()输出任何内容:
JFrame frame = new JFrame("FrameDemo");
在此之前输出任何内容。
答案 0 :(得分:1)
好的,所以我检查了你的代码,它确实有效。 首先,如果JLabel中没有任何内容,则JLabel不可见。
pack();
//basically CRUSHES the entire frame if it doesn't have objects to collapse on.
此外,如果您不想在JLabel中放置任何内容,请不要打包它。只需使用
将其设置为一定的大小frame.setSize(width,height);
它只显示任何内容,因为您在没有在JLabel中添加任何内容的情况下折叠了它。我希望我回答你的问题基本上这就是你想要的
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class test extends JFrame{
public static void main(String[] args){
//1. Create the frame.
JFrame frame = new JFrame("FrameDemo");
//2. Optional: What happens when the frame closes?
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//3. Create components and put them in the frame.
JLabel emptyLabel = new JLabel("BLAHBLAHBHALBAHLKKDJF");
frame.getContentPane().add(emptyLabel, BorderLayout.CENTER);
//4. Size the frame.
frame.pack();
//5. Show it.
frame.setVisible(true);
}
}
或者你可以用
设置大小frame.setSize(width,height);
玩得开心!