java是否将焦点赋予不是焦点窗口子级的面板?
我正在用Java创建一个内部工具。两者由两个JPanels
组成,预计将在两个单独的屏幕上运行。我希望能够单击JButton
,它是JFrame A
的一部分,它将向JFrame B
发送键盘操作
不幸的是,我似乎不能这样做,因为JFrame B
没有焦点,并且我不能使用任何请求Focus
方法,因为JFrame B
不是Focus Window
(JFrame A
是)的子对象
所以,我怎样才能给予JFrame B
焦点,尽管它不是Focus Window
的子对象,或者将Keyboard Event
发送给它将在没有焦点的情况下响应的JFrame B
# 1 楼答案
在两个JFrames之间管理焦点是如此困难,最好只创建一个JFrame,其他Top-level Containers将是JDialogs,创建一个/两个JDialog(s),并通过删除所有JComponents来重用
基本上是:
但在两个JFrames之间有点复杂,只是一个基本且未完成的示例(基于old.good.sun.forums.com的代码)
编辑:关于如何将焦点添加到
JDialog
是否有camickr的优秀Woodoo Dialog Focus但是AncestorListener不是我喜欢的Java,对我来说太抽象了# 2 楼答案
没有人说你不能让一个} 。注意支持@mKorbel答案的注意事项
Action
向另一个发送消息。在这个example,Enter
也需要Clear
,因此它转发ActionEvent
。还要注意,每个NumberButton
将两个击键绑定到Click
。在您的情况下,您可能必须删除现有绑定,并可能在另一个窗口上调用^{# 3 楼答案
这是一个Swing GUI(您没有提到或向GUI库添加标记)?如果是这样,请考虑使用^ a1},它与焦点侦听器相比可以更加灵活。p>