我创建了一个JDialog
扩展,它在内容面板内只有一个组件,即一个JProgressBar
。这个JProgressBar
是公共的,因为我希望它的值由拥有者类设置。但是当我创建一个新的对话框时,内容面板根本不显示,导致进度条背后的任何东西都被显示出来:
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。如您所见,代码完全相同。问题在于测试可以正常工作并正确显示。我已经添加了所有与对话框窗口的其他实现相关的代码。