您好,我的 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/