我创建了一个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