我正在创建一个应用程序Swing
,但我遇到了问题。我想处理focusLost()
andfocusGained()
事件,但我认为我的代码有问题。
我有以下测试代码:
addWindowFocusListener(new WindowFocusListener() {
@Override
public void windowLostFocus(WindowEvent e) {
System.out.println("Lost!");
System.out.println(e.toString());
}
@Override
public void windowGainedFocus(WindowEvent e) {
System.out.println("Gained!");
System.out.println(e.toString());
}
});
而且,当我激活窗口时,似乎应用程序一次处理 2 个事件:
获得! java.awt.event.WindowEvent[WINDOW_GAINED_FOCUS,opposite=null,oldState=0,newState=0] on frame0 丢失的! java.awt.event.WindowEvent[WINDOW_LOST_FOCUS,opposite=null,oldState=0,newState=0] 在 frame0
而且,当我停用窗口时,程序什么也不打印。
还有更有趣的事情。当我打开一个JFrame
属于我的应用程序的新应用程序时,事件系统可以正常工作,即使我关闭了这一秒Window
。
我只是不知道为什么会这样。请帮忙。
系统规格:
- 操作系统:Ubuntu 12.04 x86_64
- JVM:OpenJDK 7
m4tx@m4tx-EP35-DS4:~$ java -version 拿起_JAVA_OPTIONS:-Dawt.useSystemAAFontSettings=lcd java版本“1.7.0_03” OpenJDK 运行环境 (IcedTea7 2.1.1pre) (7~u3-2.1.1~pre1-1ubuntu3) OpenJDK 64 位服务器 VM(构建 22.0-b10,混合模式)