Java 通过构造函数的JOptionPane未显示/提示
我正在编写一个脚本,它将调用一组其他脚本,在必要时传递适当的参数。由于调用了多个脚本,因此可能出现多个故障点。如果脚本在流程中途失败,则会记录该脚本,并在程序下次启动时提示用户从该位置继续 服务器和用户都可以启动程序。一个是自主的,一个不是。在autonomy的情况下,我希望恢复的提示有10秒的超时时间,这样如果没有收到输入,脚本将只在开始时启动 我已经从静态showOptionDialog移动到一个JOptionPane构造的对话框,这样我就可以通过编程方式访问它,在10秒后杀死它我的问题在于构造函数,不会出现提示。 我所尝试的:Java 通过构造函数的JOptionPane未显示/提示,java,swing,visibility,joptionpane,Java,Swing,Visibility,Joptionpane,我正在编写一个脚本,它将调用一组其他脚本,在必要时传递适当的参数。由于调用了多个脚本,因此可能出现多个故障点。如果脚本在流程中途失败,则会记录该脚本,并在程序下次启动时提示用户从该位置继续 服务器和用户都可以启动程序。一个是自主的,一个不是。在autonomy的情况下,我希望恢复的提示有10秒的超时时间,这样如果没有收到输入,脚本将只在开始时启动 我已经从静态showOptionDialog移动到一个JOptionPane构造的对话框,这样我就可以通过编程方式访问它,在10秒后杀死它我的问题在于
- 我已经通过调试验证了代码是否正在进入代码块 下面是Log()脚本李>
- 如您所见,我已尝试添加JFrame 构造器。JFrame构造函数、.add()和 SetVisible(true)是没有产生提示的新添加项 还有李>
- 我还注释掉了10秒 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());
我想出来了
在遵循mKorbel简化和隔离的建议后,我将JOptionPane移到了它自己的简单类中。我不小心翻转了MessageType和OptionType。程序在隔离时引发异常,但在主程序内部运行时不会引发异常。这是因为从类构造函数分支出来的主程序逻辑最初是从引发IOException的主方法调用的
所以不是这个
JOptionPane pane = new JOptionPane("Would you like to resume from \"here\", AKA the last run script which errored?",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
options);
应该是这样,
JOptionPane pane = new JOptionPane("Would you like to resume from \"here\", AKA the last run script which errored?",
JOptionPane.QUESTION_MESSAGE,
JOptionPane.YES_NO_OPTION,
null,
options);
愚蠢的错误
编辑:我还删除了框架,因为它对于一个基本上没有GUI的应用程序来说是不必要的。类似形式的代码工作时不会出现问题,调试或发布SSCCE/MCVE简短、可运行、可编译的演示字束直到JOptionPane可见为止不会出现任何情况,模式对话框阻止(全部)重新绘制要查看已可见的GUI,请参见。