JFrame不会显示 - 代码中没有错误

时间:2015-03-17 00:46:28

标签: java swing

最近我扩展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");

在此之前输出任何内容。

1 个答案:

答案 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);

玩得开心!