我創建了一個JDialog
擴展,其內容窗格中包含一個組件JProgressBar
。 JProgressBar
是公開的,因爲我想要由所有者類設置值。當我創建一個新的對話框,內容窗格中不會出現在所有的,導致無論是顯示的,而不是進度條背後:ContentPane和JProgressBar不可見
Since I'm not allowed to use img tags...
public class ProgressBarDialog extends JDialog {
public JProgressBar bar;
public ProgressBarDialog(Frame owner, String title) {
super(owner, title);
bar = new JProgressBar(JProgressBar.HORIZONTAL, 0, 100);
bar.setValue(0);
bar.setStringPainted(true);
bar.setPreferredSize(new Dimension(200, 100));
getContentPane().setLayout(new BorderLayout());
getContentPane().add(bar, BorderLayout.CENTER);
setSize(200, 100);
setLocationRelativeTo(null);
setVisible(true);
toFront();
}
public void setProgress(int p) {
bar.setValue(p);
}
}
此ProgressBarDialog
的用法碼如下
ProgressBarDialog progBarDialog = new ProgressBarDialog(null,"Submitting");
//Stuff gets done
progBarDialog.setProgress(20);
//Stuff gets done
progBarDialog.setProgress(45);
//Stuff gets done
progBarDialog.setProgress(70);
//Stuff gets done
progBarDialog.setProgress(100);
//Stuff gets done
progBarDialog.dispose();
有什麼我失蹤,因爲這是(我認爲)一個相當簡單的實現?
根據camickr的建議,我在這裏創建了一個測試SSCCE:TestDialog.java。正如你所看到的,代碼完全一樣。問題是測試正常工作並顯示。我添加了與對話框窗口的其他實現有關的所有代碼。
我在setStringPainted()之後添加了這些行,但在將其添加到內容窗格之前添加了這些行: bar.setPreferredSize(new Dimension(200,100)); bar.setSize(200,100); 它仍然沒有顯示。 – 2009-08-10 22:07:19