[英]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.