【发布时间】:2015-05-15 05:07:59
【问题描述】:
我想创建一个带有计时器的JOptionPane.showConfirmDialog。默认选项将是退出。但是如果我点击是选项它应该继续工作,如果我点击否选项它应该退出。如果我不点击任何选项,它应该会自动退出代码。
我尝试了以下示例代码。它正在部分工作。但问题是我无法模拟是/否选项。在任何情况下,它都会从带有 YES 选项的代码中退出。
虽然这段代码取自其中一个线程,但那里的实现是不同的。我只是根据需要修改了代码。 请找到以下代码:
public class TestProgress {
public static void main(String[] args) {
final JOptionPane msg = new JOptionPane("Database Already Exist. Do you want to continue...?", JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION);
final JDialog dlg = msg.createDialog("Select Yes or No");
final int n = msg.YES_NO_OPTION;
dlg.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(msg.YES_OPTION==n){
System.out.println("Continue the work.. "); // should not exit
}
else if(msg.NO_OPTION==n)
dlg.setVisible(false);
System.exit(1);
}
}).start();
dlg.setVisible(true);
System.out.println("Outside code.");
}
}
我还需要做什么才能使其正常工作?
【问题讨论】:
-
你的意思是this之类的?
-
当我们讨论这个主题时,您的代码毫无意义。
JOptionPane呈现一个模态对话框。这意味着一旦您调用setVisible,代码执行将被阻塞,直到对话框关闭。您应该检查来自JOptionPane.showMessageDialog或JOptionPane.showConfirmationDialog的结果结果,然后做出选择 -
@MadProgrammer 实际上可以将 WindowListener 或 WindowFocusListener 添加到 JOPtionPane 的对话框中以启动 Timer 并在一段时间后关闭。
-
@StanislavL 但在这种情况下,何必呢? OP 在一段时间后不会自行关闭对话框,只是“检查”值
标签: java swing timer joptionpane