[英]JProgressBar doesn't update when JDialog's modal
我了解没有办法制作JProgressMonitor
模态,而宁愿使用带有JProgressBar
的JDialog
。 现在,我可以正常工作了-但是只要不尝试使JDialog
模式化即可。 谁能告诉我我在做什么错?
private Frame frame;
private JPanel contentPane;
private JProgressBar progressBar;
public MainClass() {
JButton startBtn = new JButton("Start");
startBtn.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(final ActionEvent arg0)
{
new Thread(new Runnable()
{
@Override
public void run()
{
createJDialog();
for (int i = 0; i < 100; ++i)
{
final int j = i;
doInBackground(); // Batch process
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
progressBar.setValue(j);
}
});
}
}
}).start();
}
});
}
public void createJDialog()
{
JDialog d = new JDialog();
d.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
// Keeps progressBar from updating
// d.setModalityType(Dialog.ModalityType.APPLICATION_MODAL);
// d.setModal(true);
d.getContentPane().add(progressBar, BorderLayout.PAGE_START);
d.getContentPane().add(progressBar, BorderLayout.PAGE_END);
d.pack();
d.setVisible(true);
}
调用createJDialog();
线程启动后,不是从内部Runnable
启动。
根据Java API文档 ,对d.setVisible(true)
的调用将d.setVisible(true)
阻塞,直到对话框处于模式状态时对话框关闭为止。
尝试在一个单独的线程中启动该调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.