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

时间:2019-05-19 08:06:14

标签: java swing jframe jdialog

因此,我试图使用带有Java SQL Swing表格和MYSQL JDBC Connectivity的购物车应用程序,在该应用程序的一部分中,当用户单击“查看产品”之类的按钮时,机器需要花费一些时间来加载来自数据库的信息并在应用程序中输出,因此在那段时间内我想显示一个加载图标,直到工作完成。为此,我创建了一个单独的JDialog用于显示加载的gif,然后从JFrame中打开它在按钮的ActionPerformed事件上。这是我的工作:

    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计时器在1秒后关闭JDialog并不能按预期工作,因此有任何方法可以完成此任务,即在一定时间?

1 个答案:

答案 0 :(得分:2)

您的对话框是模态的。因此,setVisible(true)方法调用在关闭对话框之前不会返回。因此,仅在关闭对话框后才创建计时器。

您需要创建它并在之前启动它,以使对话框可见。