【发布时间】:2016-04-16 21:38:58
【问题描述】:
注意:我工作了很多时间并研究了谷歌和 stackoverflow,但我找不到答案。
我在 JDialog 中使用 Thread.sleep(),它会冻结所有其他 JDialog、JFrame 和线程。
我的示例代码:
public Guitest()
{
setSize(300,300);
// create a JDialog that make guitest wait
MyDialog dlg = new MyDialog();
dlg.setSize(100,100);
dlg.setVisible(true);
while(dlg.isWait())
{
try
{
Thread.sleep(1000);
} catch (InterruptedException ex)
{
Logger.getLogger(Guitest.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("waiting mydialog");
}
}
class MyDialog extends JDialog
{
boolean wait = true;
JButton btn = new JButton("OK");
public MyDialog()
{
setSize(50,50);
btn.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
wait=false;
}
});
add(btn);
}
public boolean isWait()
{
return wait;
}
}
在这种情况下,JDialog 无法正确显示:
但它必须是这样的:
我该如何解决这个问题。我想让主线程等待另一个线程。有人可以更正我的示例代码或与这种情况分享示例代码。
【问题讨论】:
标签: java multithreading swing awt sleep