gpt4 book ai didi

java - 无需用户操作自动关闭 Jdialog

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:16:37 25 4
gpt4 key购买 nike

我正在创建一个应用程序,在其中测试一定数量的界面功能,当发生错误时,我希望显示一条错误消息。
然后应用程序应该截取整个屏幕,最后错误消息在没有用户帮助的情况下关闭。

为此,我尝试如下使用 JDialog:

    JOptionPane pane = new JOptionPane("Error message", JOptionPane.INFORMATION_MESSAGE);
JDialog dialog = pane.createDialog("Error");
dialog.addWindowListener(null);
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
dialog.setVisible(true);
Application.takeScreenshot();
dialog.setVisible(false);

想知道有没有具体的关闭方法。我查阅了文档,但似乎找不到。我试图在 SO 上找到相关问题,但找不到解决我问题的问题。

我想知道是否有办法获取窗口句柄,然后使用它关闭它,或者简单地向窗口发送“CLOSE”或“Press_ok”事件?

编辑:在我看来,当消息框显示时代码完全停止运行,就像有一个 Thread.sleep() 直到用户手动关闭窗口。

如果可能,代码示例会很有帮助。

谢谢

最佳答案

尝试使用ScheduledExecutorService。像这样的东西:

    JDialog dialog = pane.createDialog("Error");
dialog.addWindowListener(null);
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);

ScheduledExecutorService sch = Executors.newSingleThreadScheduledExecutor();
sch.schedule(new Runnable() {
public void run() {
dialog.setVisible(false);
dialog.dispose();
}
}, 10, TimeUnit.SECONDS);

dialog.setVisible(true);

[编辑]

关于 camickr 评论,文档没有提到 ScheduledExedcutorService 在事件调度线程上执行。所以最好使用 swing.Timer

JDialog dialog = pane.createDialog("Error");
dialog.addWindowListener(null);
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);

Timer timer = new Timer(10000, new ActionListener() { // 10 sec
public void actionPerformed(ActionEvent e) {
dialog.setVisible(false);
dialog.dispose();
}
});

timer.start();

dialog.setVisible(true);

关于java - 无需用户操作自动关闭 Jdialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19274329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com