当前位置: 首页 > 面试题库 >

关闭可运行的JOptionPane

殳飞扬
2023-03-14
问题内容

我有这个可运行的窗口:

 EventQueue.invokeLater(new Runnable(){
    @Override
    public void run() {
        op = new JOptionPane("Breaktime",JOptionPane.WARNING_MESSAGE);
        dialog = op.createDialog("Break");
        dialog.setAlwaysOnTop(true); 
        dialog.setModal(true);
        dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);      
        dialog.setVisible(true);
     }
 });

我是否可以在此处设置一个计时器在1或2分钟内将其关闭,而不是单击“确定”按钮?


问题答案:

是的,诀窍是Timer在致电之前开始使用setVisible

public class AutoClose02 {

    public static void main(String[] args) {
        new AutoClose02();
    }

    private Timer timer;
    private JLabel label;
    private JFrame frame;

    public AutoClose02() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JOptionPane op = new JOptionPane("Breaktime", JOptionPane.WARNING_MESSAGE);
                final JDialog dialog = op.createDialog("Break");
                dialog.setAlwaysOnTop(true);
                dialog.setModal(true);
                dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);

                // Wait for 1 minute...
                timer = new Timer(60 * 1000, new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        dialog.dispose();
                    }
                });
                timer.setRepeats(false);
                // You could use a WindowListener to start this
                timer.start();

                dialog.setVisible(true);
            }
        }
        );
    }

}


 类似资料:
  • Android studio不在Windows 8中运行。我下载并安装了它,但当我按下图标运行它时,什么都没发生。我尝试与管理员一起运行。我尝试设置与Windows 7的兼容性。

  • 我们有两个应用程序,一个是用Tkinter接口开发的,另一个是用wxPython构建的。两者都相当复杂。运行完Tkinter应用程序后,我希望在Tkinter应用程序中选择一个按钮后运行wxPython应用程序。是否可以切换事件循环,以便Tkinter应用程序可以无缝切换到wxPython GUI? 而在:操作系统。系统('pythonwxgui.py') 最终的程序需要捆绑到一个用于多个操作系统

  • 我试图理解如何处理ExecutorService执行Runnable命令的许多实例。关于提供的代码,如果我在固定线程池设置为1的情况下执行100个Runnable,需要多少次关闭?我认为代码应该以for循环的执行顺序,用一个线程(绝不会产生超过一个线程)顺序执行一百个futures,并且需要关闭一个ExecutorService。对吗?此外,在for循环完成后立即调用shutdown也是可以的,因

  • 假设我们有一个前提条件,有了类定义: 其中实例是从数据存储中获取的,它可以是 变量通过web服务填充,也可以是。结果应该加载从web服务获取的值的优先级。 我希望你们在这里发表意见,让我们讨论一下这两行中哪一行更具可读性? 不确定是否会给您带来困惑!?我一直在尝试使用它们,有时会因为一句话而失去指南针。也许,这也可能很愚蠢,但我很好奇你的想法是什么?

  • 这是代码(我正在研究IntellijJava):我不知道是什么导致了它。 这是控制台:

  • 我使用ActiveMQ使用mvn构建运行集成测试。这是我的pom。xml首先触发activemq,然后触发集成测试,以便它们可以使用上面的activemq实例传输消息。 它工作正常,但不能顺利关闭..当mvn构建结束并且所有测试都成功时,构建看起来很好。但是activemq在关闭时会显示以下错误:- 有没有一种方法可以让Maven在maven构建完成时顺利关闭activeMQ而没有上述例外?以下是