我正在搜索定时的JDialog,它会在指定的时间过后消失,找到的代码运行正常。
JFrame f = new JFrame();
final JDialog dialog = new JDialog(f, "Test", true);
Timer timer = new Timer(2000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
dialog.setVisible(false);
dialog.dispose();
}
});
timer.setRepeats(false);
timer.start();
dialog.setVisible(true);
但是在更改下面的代码后无法正常工作,即在指定的时间过后,模态没有被关闭:
JFrame f = new JFrame();
final JDialog dialog = new JDialog(f, "Test", true);
dialog.setVisible(true);
Timer timer = new Timer(2000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
dialog.setVisible(false);
dialog.dispose();
}
});
timer.setRepeats(false);
timer.start();
我无法理解为什么会这样。如果有人解释原因,那将是非常有帮助的。
提前致谢。
答案 0 :(得分:2)
因为在第二个程序中,当对话框是模态时,dialog.setVisible(true);
的调用被阻塞,即执行在那里停止,直到你关闭对话框。因此,在手动关闭对话框之前,计时器不会启动。第一个程序是解决方案。为什么要做第二个?