【问题标题】:setDefaultCloseOperation not working in SwingsetDefaultCloseOperation 在 Swing 中不起作用
【发布时间】:2012-04-13 01:37:46
【问题描述】:

我需要停止在摆动窗口上单击红色x标记时关闭窗口的默认操作。我正在使用 JDialog 并将 WindowsListener 添加到它以捕获 WindowClosing 事件,在那里我决定是否处置 JDialog 或不处置它,我还设置以下内容:

setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);

但是当我点击红色的 x 标记时,窗口仍然关闭。有什么想法吗?

【问题讨论】:

  • 你能粘贴一些代码来检查一下吗?
  • doNothingOnClose worksformalways - 是时候展示 SSCCE
  • 希望这个example 可以帮助你:-)

标签: java swing window jdialog


【解决方案1】:

您可以尝试创建一个 WindowListener 并在单击关闭按钮时不执行任何操作。

jdialog.addWindowListener(new WindowAdapter() 
{
  public void windowClosed(WindowEvent e)
  {   
  }

  public void windowClosing(WindowEvent e)
  {
  }

});

【讨论】:

  • 是的,我正在这样做,但默认情况下会发生关闭窗口的行为。要覆盖默认行为,我们需要执行 setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);,我正在这样做,但它仍在关闭
  • 您提到的功能将完美地适用于jFrame。我不确定它是否适用于 jDialog。检查相同。
  • -1 添加一个无所事事的侦听器肯定具有完全...零效果(对话框或框架无关紧要)
  • @Kleopatra 效果为零。同时它也不会关闭窗口。
  • 框架/对话框默认关闭:-)
【解决方案2】:

向 JDialog 添加窗口侦听器使我能够处理窗口操作,并且在我的应用程序中工作正常。

【讨论】:

  • ehh ...这个答案非常模糊:毫无疑问它可以完成,OP想知道如何确切地设置对话框以及 what 在监听器中到底要做什么 :-)
猜你喜欢
  • 1970-01-01
  • 2014-08-18
  • 1970-01-01
  • 1970-01-01
  • 2018-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多