java - 如何自动点击JOptionPane的OK

标签 java swing timer joptionpane

我有一个JOptionPane。如果用户在 10 分钟内没有单击它,则 JOptionPane 应自动单击“确定”。

我该怎么做?

最佳答案

首先,从 JOptionPane 对象创建一个 JDialog。然后,创建一个运行 10 分钟(600,000 毫秒)的计时器,并在完成后处理该对话框。然后,从 JOptionPane 对象中检索所选值,如果对话框是由计时器处理的,请确保考虑到未初始化的值。

import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.Timer;

public class Tester {
    public static void main(String[] args) {
        final JOptionPane pane = new JOptionPane("Hello world?", JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
        final JDialog dialog = pane.createDialog(null, "Hello world");
        Timer timer = new Timer(600000, new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                dialog.dispose();
            }

        });
        timer.start();
        dialog.setVisible(true);
        dialog.dispose();
        Integer choice = (Integer) (pane.getValue() == JOptionPane.UNINITIALIZED_VALUE ? JOptionPane.OK_OPTION : pane.getValue());
    }
}

关于java - 如何自动点击JOptionPane的OK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22277093/

相关文章:

java - 在 Windows 7 上控制 setLocation 偏移 4px

java - 尝试为实体创建 key 时出现 IllegalArgumentException

java - 如何使用 C++ dlopen 宏从 C++ 代码而不是 JAVA 加载库

java - 如何删除 JPanel 中由 ArrayList 指定的项目

java - 添加 JLabel 并使用 For 循环显示它

java - 如何在 Android 中播放从 Assets 文件夹加载的 WAV 文件?

java - JTable 和迭代绑定(bind) ObservableList

c++ - 无限循环 vs boost::asio::deadline_timer C++ 性能

java - 单击按钮时显示并启动带有绘制动画的 JPanel

c++ - 如何在C++中创建计时器