在 Java 中,如何在单击 JFrame 的情况下保持原始 window 的焦点
In Java, how to keep the original window's focus, despite of clicking JFrame
我在 java 中使用这个 setFocusableWindowState(false)
方法时遇到了一些麻烦:
JFrame frame = new JFrame();
frame.setFocusableWindowState(false);
frame.setVisibled(true);
即使在 Windows OS 中,它也绝对有效。
也就是说 - 当 JFrame
可见时,它保持原始 window 的焦点。
所以我可以发送一些事件,例如 Keypress
到原始的 window.
但是,我仍然无法使用相同的代码 Mac。
只是它失去了他的焦点,然而原来的 window(在新的 JFrame
window 出现之前显示)也失去了它的焦点。所以我永远无法向 Mac 中的那个 window 发送任何事件。
尽管新的 JFrame
出现了,但请帮助我将原来的 window 的焦点保留在 Mac OS X 中。
另外,我同时使用了方法setAlwaysOnTop(true)
。
你能试试这个吗
frame.setExtendedState(JFrame.NORMAL);
frame.setAlwaysOnTop(true);
frame.requestFocus();
frame.setAlwaysOnTop(false);
最后,我在Mac中找到了实现方法。
实际上,当用户用鼠标左键单击 JFrame
时,window 失去了焦点。
但是当鼠标右键单击时,它不会失去原来的焦点。 (这是我无意中发现的。)
因此,我使用 JNI 挂钩了所有鼠标事件,然后使用鼠标左键单击事件。同时在代码中生成鼠标右键单击事件。
希望您能从这个回答中有所收获。
最好的问候。
我在 java 中使用这个 setFocusableWindowState(false)
方法时遇到了一些麻烦:
JFrame frame = new JFrame();
frame.setFocusableWindowState(false);
frame.setVisibled(true);
即使在 Windows OS 中,它也绝对有效。
也就是说 - 当 JFrame
可见时,它保持原始 window 的焦点。
所以我可以发送一些事件,例如 Keypress
到原始的 window.
但是,我仍然无法使用相同的代码 Mac。
只是它失去了他的焦点,然而原来的 window(在新的 JFrame
window 出现之前显示)也失去了它的焦点。所以我永远无法向 Mac 中的那个 window 发送任何事件。
尽管新的 JFrame
出现了,但请帮助我将原来的 window 的焦点保留在 Mac OS X 中。
另外,我同时使用了方法setAlwaysOnTop(true)
。
你能试试这个吗
frame.setExtendedState(JFrame.NORMAL);
frame.setAlwaysOnTop(true);
frame.requestFocus();
frame.setAlwaysOnTop(false);
最后,我在Mac中找到了实现方法。
实际上,当用户用鼠标左键单击 JFrame
时,window 失去了焦点。
但是当鼠标右键单击时,它不会失去原来的焦点。 (这是我无意中发现的。)
因此,我使用 JNI 挂钩了所有鼠标事件,然后使用鼠标左键单击事件。同时在代码中生成鼠标右键单击事件。
希望您能从这个回答中有所收获。 最好的问候。