Java 在swing 1.5中指定时间后自动关闭非模式对话框

Java 在swing 1.5中指定时间后自动关闭非模式对话框,java,multithreading,swing,jdialog,Java,Multithreading,Swing,Jdialog,在SwingforJava1.5中,我想创建一个对话框,允许用户在后台做其他事情。我希望这个对话框有一个按钮,你可以用它关闭对话框。如果用户没有在X秒内关闭对话框,它应该自动关闭。在这两种情况下,都必须在对话框关闭后执行例程 我尝试将Swing定时器与一个模态对话框结合使用,效果很好。但是,正如我在上面注意到的,我需要一个非模态对话框。当我将模态属性设置为false时,对话框立即消失 有人知道为什么会这样吗 JOptionPane pane = new JOptionPane (text, J

在SwingforJava1.5中,我想创建一个对话框,允许用户在后台做其他事情。我希望这个对话框有一个按钮,你可以用它关闭对话框。如果用户没有在X秒内关闭对话框,它应该自动关闭。在这两种情况下,都必须在对话框关闭后执行例程

我尝试将Swing定时器与一个模态对话框结合使用,效果很好。但是,正如我在上面注意到的,我需要一个非模态对话框。当我将模态属性设置为false时,对话框立即消失

有人知道为什么会这样吗

JOptionPane pane =  new JOptionPane (text, JOptionPane.WARNING_MESSAGE);
pane.setOptions(new String[]{"Close"});
final JDialog dialog = pane.createDialog(frame, title);
//dialog.setModal(false);

Timer timer = new Timer(time, new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        dialog.setVisible(false);
    }
});
timer.setRepeats(false);
timer.start();

dialog.setVisible(true);

//routine to do after the dialog disappears
  • 为了更快地获得更好的帮助,文章中没有关于
    多线程的代码或说明

  • 不要创建
    final JDialog dialog=pane.createDialog(框架,标题)
    在运行时,一次创建此
    JDialog
    并将其用于另一个操作,和/或从
    ContentPane

  • 重写适当的事件,您可以在
    dipose()
    setVisible()
    e.i.之前调用自定义代码

  • (指向第二点。)只需覆盖到
    HIDE\u ON\u CLOSE

  • 在运行时调用新的
    顶级容器的所有代码必须包装到
    invokeLater()
    ,尤其是
    setVisible(true)

  • 使用

  • 为了更快地获得更好的帮助,文章中没有关于
    多线程的代码或说明

  • 不要创建
    final JDialog dialog=pane.createDialog(框架,标题)
    在运行时,一次创建此
    JDialog
    并将其用于另一个操作,和/或从
    ContentPane

  • 重写适当的事件,您可以在
    dipose()
    setVisible()
    e.i.之前调用自定义代码

  • (指向第二点。)只需覆盖到
    HIDE\u ON\u CLOSE

  • 在运行时调用新的
    顶级容器的所有代码必须包装到
    invokeLater()
    ,尤其是
    setVisible(true)

  • 使用

  • 在这种情况下,一个无模式的
    JDialog
    在关闭前包含一个倒计时到零的值。附近包含标签的
    JFrame
    保持响应

    附录:@mKorbel提供了一些有用的注释,您的类可以使用
    PropertyChangeListener
    来了解对话框的选项窗格何时关闭。这是一个方便的
    JOptionPane
    ,但是您可以添加自己的支持,如图所示

    在这种情况下,一个无模式的
    JDialog
    在关闭前包含一个倒计时到零的值。附近包含标签的
    JFrame
    保持响应

    附录:@mKorbel提供了一些有用的注释,您的类可以使用
    PropertyChangeListener
    来了解对话框的选项窗格何时关闭。这是一个方便的
    JOptionPane
    ,但是您可以添加自己的支持,如图所示


    您的代码对我有效,设置为模态或非模态。您的其他代码可能有问题?与Rempelos一样,在设置对话框模式和未设置对话框模式的情况下测试代码,结果正常。您向我们展示的内容以外的内容无法按预期工作。您是否在Java 1.5中尝试过此功能?我在1.5中使用jdk1.6.0_33的执行环境中尝试过,但没有安装1.5。您的代码对我有效,可以设置为模态或非模态。您的其他代码可能有问题?与Rempelos一样,在设置对话框模式和未设置对话框模式的情况下测试代码,结果正常。您向我们展示的内容以外的其他内容无法按预期工作。您在Java 1.5中尝试过此功能吗?我在1.5中使用jdk1.6.033的执行环境中尝试过,没有安装1.5。引用的示例在无模式对话框中直接使用
    JOptionPane
    。引用的示例在无模式对话框中直接使用
    JOptionPane
    。现在我可以查看查看对话框消失后要执行的
    //例程了
    这是一个好主意!我aaach现在我可以查看eeee
    //对话框消失后要执行的例程
    很好!我以上。