java - 当窗口失去焦点时隐藏 JDialog 窗口

标签 java events window jdialog

您好,我的 Java 应用程序中只有一个 JDialog 框。如果它失去焦点,我想让它不可见。 我尝试了不同的方法,但无法触发任何窗口焦点事件。这是我的代码:

  public void windowGainedFocus(WindowEvent e) {
    System.out.println("gained focus");
  }

  public void windowLostFocus(WindowEvent e) {
    System.out.println("lost focus");
  }

最佳答案

响应 Focus 事件可能非常棘手。我的经验是,几乎任何时候有人试图专注地做非标准的事情,他们最终都会后悔。最重要的问题是它并不是真正的便携 - 许多基于 X-Windows 的显示器使用焦点跟随鼠标,这可能会导致焦点在你不期望的时候被转移,导致早期驳回您的对话。

也就是说,Sun 的官方教程在这里:http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html .如果我没记错的话,您可以将 PropertyChangeListener 附加到 KeyboardFocusManager,这将在焦点更改时被触发:http://java.sun.com/javase/6/docs/api/java/awt/KeyboardFocusManager.html#addPropertyChangeListener%28java.beans.PropertyChangeListener%29

关于java - 当窗口失去焦点时隐藏 JDialog 窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3109148/

相关文章:

java - 通过单击先前复制的按钮复制按钮并编辑文本,ANDROID

javascript - 如何在元素单击时获取对象属性?

c# - 通过事件传递变量 C#

angular - location.hash 改变时如何使用@HostListener? ( Angular 2)

javascript - 在页面调整大小时更新窗口尺寸

java - 检查是否有未接来电

java - Java GC 如何调用 finalize() 方法?

java - 是否可以从内存中获取所有对象?

c# - 从父级的任何子控件捕获击键

wpf - 关闭子窗口最小化父窗口