首先,建议在Swing Event-Dispatch线程中进行所有GUI更新,即使用
SwingUtilites类。
其次,您
JDialog是模态的,因此阻塞了
setVisible(true)调用该方法的线程(在您的情况下为Main线程,在以下情况下为Swing
Event-Dispatch Thread)。
我并不是说以下代码是完美的,但是它应该使您步入正轨。
final JDialog waitForTrans = new JDialog((Jframe) null, true);SwingWorker worker = new SwingWorker() { public String doInBackground() throws Exception { Thread.sleep(5000); return null; } public void done() { SwingUtilities.invokeLater(new Runnable() { public void run() { waitForTrans.setVisible(false); waitForTrans.dispose(); } }); }};worker.execute();SwingUtilities.invokeLater(new Runnable() { public void run() { waitForTrans.add(new JLabel("Please Wait...")); waitForTrans.setMinimumSize(new Dimension(300, 100)); waitForTrans.setVisible(true); }});
希望这可以帮助。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)