我有一個相對較小的類稱爲「LoadingWindow」這個類有一個構造函數調用Initialize函數來設置框架。不是我正在測試一些東西,試圖解決爲什麼它不會更新。在測試中,我添加了「this.removeAll();」到初始化方法的頭部。事實證明,我不能在此之後添加任何內容。我添加的任何內容都不會顯示。無法添加到JFrame後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);
}
}
本身並正確彈出,帶有標題的窗口。但窗口本身是完全空白的。
我靜態實現此類,以便其他四個對象可以在EditorPanel類中訪問它。它的定義爲:
public static LoadingWindow loadingWindow;
,並在構造函數初始化所用:
loadingWindow = new LoadingWindow();
有那麼用它來展示它,如果它是隱藏的功能中的雙重檢查。
if(!EditorPanel.loadingWindow.isVisible()){EditorPanel.loadingWindow.Initialize();}
總的來說,我有點困惑,爲什麼沒有內容顯示,我在問任何問題很感興趣,並願意提供必要的任何信息。谷歌沒有提供很多,我發現我已經實現了每一個答案,例如「重繪和驗證」。
我期待着您的迴音!
〜特拉維斯
通知,不叫'JFrame.removeAll()',結果可能是去掉'RootPane',空使用'Toolbar'和'Borders'的容器,使用'JFrame.getContentPane()。removeAll()'代替 – mKorbel