代码之家  ›  专栏  ›  技术社区  ›  Sastrija Victor

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

  •  1
  • Sastrija Victor  · 技术社区  · 15 年前

    我尝试了不同的方法,但未能触发任何窗口焦点事件。这是我的密码:

      public void windowGainedFocus(WindowEvent e) {
        System.out.println("gained focus");
      }
    
      public void windowLostFocus(WindowEvent e) {
        System.out.println("lost focus");
      }
    
    2 回复  |  直到 15 年前
        1
  •  2
  •   Curtis    15 年前

    对焦点事件的反应非常棘手。我的经验是,每当有人试图专注地做不规范的事情时,他们最终都会后悔。其中最重要的一个问题是,它并不是真正的便携性-许多基于X-Windows的显示器使用焦点跟随鼠标,这可能会导致焦点被转移时,你不期望它,导致提前取消你的对话框。

    http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html http://java.sun.com/javase/6/docs/api/java/awt/KeyboardFocusManager.html#addPropertyChangeListener%28java.beans.PropertyChangeListener%29

        2
  •  2
  •   camickr    15 年前

    使用WindowListener并处理windowDeactivated事件。