gpt4 book ai didi

java - 在 swing 1.5 中的指定时间后自动关闭非模态对话框

转载 作者:行者123 更新时间:2023-11-29 03:42:05 25 4
gpt4 key购买 nike

在 Java 1.5 的 Swing 中,我想创建一个对话框,允许用户在后台执行其他操作。我希望这个对话框有一个按钮,你可以用它关闭对话框。如果用户在 X 秒内没有关闭对话框,它应该自行关闭。在这两种情况下,都必须在对话框关闭后执行例程。

我尝试将 Swing Timer 与模态对话框一起使用,并且它有效。但是,正如我在上面注意到的,我需要一个非模态对话框。当我将 modal-Property 设置为 false 时,对话框立即消失。

有人知道,为什么会这样吗?

JOptionPane pane =  new JOptionPane (text, JOptionPane.WARNING_MESSAGE);
pane.setOptions(new String[]{"Close"});
final JDialog dialog = pane.createDialog(frame, title);
//dialog.setModal(false);

Timer timer = new Timer(time, new ActionListener() {
public void actionPerformed(ActionEvent e) {
dialog.setVisible(false);
}
});
timer.setRepeats(false);
timer.start();

dialog.setVisible(true);

//routine to do after the dialog disappears

最佳答案

  1. 为了获得更好的帮助,请尽快发布 SSCCE ,没有关于MultiThreading

  2. 的代码或描述
  3. 不要在运行时创建 final JDialog dialog = pane.createDialog(frame, title);,一次创建此 JDialog 并重新使用它操作,和/或通过从 ContentPane

  4. 中删除所有子项
  5. 覆盖来自 WindowListener 的适当事件,您可以在 dipose()setVisible() e.i.

  6. 之前调用您的自定义代码
  7. (指向第 2 点。)只是为了覆盖 JDialog#setDefaultCloseOperationHIDE_ON_CLOSE

  8. 所有在运行时调用新的Top-Level Container的代码都必须被包装到invokeLater()中,尤其是setVisible(true)

  9. 使用 Application Inactivity by @camickr

关于java - 在 swing 1.5 中的指定时间后自动关闭非模态对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12690178/

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