小编Tra*_*hel的帖子

removeAll()后无法添加到JFrame

我有一个名为"LoadingWindow"的相对较小的类,这个类有一个构造函数,它调用Initialize函数来设置框架.不是我测试了一些东西试图解决为什么它不会更新.在测试时我添加了"this.removeAll();" 到初始化方法的头部.事实证明,之后我无法添加任何内容.我添加的任何内容都不会显示.

这是一个略微修剪过的版本:

public class LoadingWindow extends JFrame{

public JPanel panel;

public JProgressBar bar;

private JLabel label;

public LoadingWindow()
{

    this.Initialize();

}

public void Initialize()
{
    this.removeAll();

    this.setSize(300, 150);

    panel = new JPanel(new BorderLayout());
    bar = new JProgressBar(0,100);
    label = new JLabel("Please remain calm, we're just loading...");

    panel.add(bar,BorderLayout.CENTER);
    panel.add(label,BorderLayout.SOUTH);

    this.add(panel);

    this.validate();
    this.repaint();
    this.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)

窗口本身确实弹出正确,带有标题.然而,窗口本身是完全空白的.

我静态地实现这个类,以便其他四个对象可以在EditorPanel类中访问它.其定义为:

public static LoadingWindow loadingWindow;
Run Code Online (Sandbox Code Playgroud)

并在构造函数中初始化:

loadingWindow = new LoadingWindow();
Run Code Online (Sandbox Code Playgroud)

然后在函数中进行双重检查,如果它被隐藏,则使用它来显示它.

if(!EditorPanel.loadingWindow.isVisible()){EditorPanel.loadingWindow.Initialize();}
Run Code Online (Sandbox Code Playgroud)

总的来说,我对于为什么没有内容显示有点困惑,我对任何问题都很感兴趣,并愿意提供任何必要的信息.谷歌并没有提供很多,而且我发现我已经实施了"重绘和验证"的每个答案.

我期待着您的回音!

〜特拉维斯

java swing add jframe removeall

4
推荐指数
1
解决办法
3407
查看次数

标签 统计

add ×1

java ×1

jframe ×1

removeall ×1

swing ×1