如何自动关闭JOptionPane?

时间:2015-06-22 00:07:00

标签: java swing timer joptionpane jdialog

我希望在过了一段时间后关闭JOptionPane,我尝试使用dispose()hide(),并使用命令getRootPane().dispose()但没有结果。

我希望在3秒或更长时间后关闭它,以便用户在JOptionPane出现的任何时候都不需要按下按钮。

2 个答案:

答案 0 :(得分:0)

您可以使用其中一个语句来隐藏/关闭JFrame。

Frame.setVisible(false);

jFrame.dispose();

public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setContentPane(new JOptionPane());
        frame.setVisible(true);
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        try {
            Thread.sleep(5000); //sleep 5 seconds
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        frame.setVisible(false);
    }

答案 1 :(得分:-1)

您可以遍历活动窗口,在要执行此操作的类上创建此方法:

private Timer createTimerClose(int seconds) {
    ActionListener close = new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            Window[] windows = Window.getWindows();
            for (Window window : windows) {
                if (window instanceof JDialog) {
                    JDialog dialog = (JDialog) window;
                    if (dialog.getContentPane().getComponentCount() == 1
                        && dialog.getContentPane().getComponent(0) instanceof JOptionPane){
                        dialog.dispose();
                    }
                }
            }

        }

    };
    Timer t = new Timer(seconds * 1000, close);
    t.setRepeats(false);
    return t;
}

然后你调用metod createTimerClose(secondsyouwanttoclose).start();在调用你的JOptionPane之前。