【发布时间】:2014-07-26 11:30:38
【问题描述】:
我正在编写一个脚本,它将调用一堆其他脚本,并在必要时传递适当的参数。由于调用了多个脚本,因此可能出现多个故障点。如果脚本在流程中途失败,则会记录下来,并在程序下一次启动时提示用户从该位置恢复。
服务器和用户都可以启动程序。一个是自主的,一个不是。在自治的情况下,我希望提示恢复有 10 秒的超时时间,因此如果没有收到任何输入,脚本将从头开始。
我已从静态 showOptionDialog 移至 JOptionPane 构造的对话框,因此我可以通过编程方式访问它以在 10 秒后将其终止。 我的问题是构造函数,不会出现提示。
我尝试过的:
- 我已通过调试验证代码正在进入代码块 Log() 脚本如下。
- 如您所见,我已尝试添加 JFrame 构造函数。 JFrame 构造函数、.add() 和 frame.SetVisible(true) 是没有提示的新增内容 也是。
- 我也注释掉了10秒 dialog.setVisible(false) 以防万一它被调用 过早地。
我确定我遗漏了一些明显的东西,但我看不到它。
if(foundErroredScript != null)
{
Log("debug - Found errored script, \"" + foundErroredScript + "\"");
//Resume prompt
Object[] options = {"Yes, resume", "No, start over"};
JFrame frame = new JFrame();
JOptionPane pane = new JOptionPane("Would you like to resume from \"" + foundErroredScript + "\", AKA the last run script which errored?",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
options);
frame.add(pane);
final JDialog dialog = pane.createDialog("Found last errored module");
Timer timer = new Timer(10000, new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
//dialog.setVisible(false);
}
});
timer.setRepeats(false);
timer.start();
frame.setVisible(true);
dialog.setVisible(true);
Log("User selected " + pane.getValue());
【问题讨论】:
-
类似形式的代码可以正常工作,调试或发布 SSCCE/MCVE 简短、可运行、可编译的演示词
-
直到 JOptionPane 可见,什么都不会发生,模式对话框阻止(全部)重绘到已经可见的 GUI
标签: java swing visibility joptionpane