如何在从 Jframe 打开一段时间后关闭 JDialog

How to close a JDialog after a certain period of timeopened from a Jframe

所以我正在尝试使用 Java 带有 MYSQL JDBC 连接的 Swing 表单制作一个购物车应用程序,在应用程序的一部分中,当用户单击按钮时"View Product",机器从数据库加载信息并在应用程序中输出需要时间,所以在那段时间我想显示一个加载图标,直到工作完成 done.To 实现这个我创建了一个单独的 JDialog 用于显示加载 gif,并在按钮的 ActionPerformed 事件上从 JFrame 打开它。这是我的作品:

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        JDialog dialog = new loader(this, true);
        dialog.setLocationRelativeTo(this);
        dialog.setVisible(true);
        Timer timer = new Timer(1000, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent arg0) {
                dialog.dispose();
            }
        });
        timer.setRepeats(false);
        timer.start();
    }

但是按照 Stack Overflow 上其他 QA 的建议,使用 Swing Timer 在 1 秒后关闭 JDialog 并没有按预期工作,所以有什么方法可以完成这个任务,即关闭 JDialog window一段时间后?

您的对话框是模态的。因此 setVisible(true) 方法调用不会 return 直到对话框关闭。因此,只有在对话框关闭后才会创建计时器。

您需要先创建并启动它然后使对话框可见。