作者superlubu (叔叔你人真好)
看板java
标题Re: [问题] 可以知道Focus不在了吗?
时间Thu Apr 9 14:28:31 2009
※ 引述《zeat (Lucifer)》之铭言:
: 标题: [问题] 可以知道Focus不在了吗?
: 时间: Thu Apr 9 11:35:42 2009
:
: 各位:
: 我搜寻过好像没有相关的文章.
: 想请问一种情形.
: 假设我点了一个textfield, 理论上算是focus在上面.
: 假设这时我又点了其他地方, e.g. JFrame or JLable or JPanel.
: 理论上这时focus应该就算消失了吧,
: 那我该如何取得消失了的focus或是有没有focus转移到其他地方的event?
: 因为我想要在focus消失时, 让textfield设成unenlabed.
: 谢谢, m(_ _)m.
: → zeat:thanks a lot. :) 04/09 11:52
: 我刚刚试了FocusListener的focusLost方法,
: 但没有办法达到我的要求@@
: 假设我点了textfield再去点JList或点我有实作click的JLabel的确会触发事件,
: 但是我点JFrame或没有实作click的JLabel便没有办法触发,
: 有办法可以解决後者吗?
: thanks a lot.
理论上当你的 focus 在 JTextfield 上而你 click JLabel 时,
Focus 还是在 JTextfield 上,因为 focus 不会转到 JLabel 上。
(你看到 caret 还是很顽皮地在 JTextfield 上闪动便知道 focus 没有离开)
当然你可以硬干... 就是在所有 Frame 上加一个 MouseListener
implement mouseClicked(MouseEvent) method, 在里面检查 Clicked component
是否 JTextfield 本身。
(没有实作 click event 的 component 都会把 event propagate 到 parent
所以 click 到 JLabel 上时会把 mouseevent 传到它的 JFrame 去)
(这个方法, click frame 的 title bar 好像还是没有作用)
--
劲过吕布的劲过相簿...
http://www.pixnet.net/superlubu
乱七八糟的,不好意思 m(_ _)m
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 147.8.127.102
※ 编辑: superlubu 来自: 147.8.127.102 (04/09 14:28)
1F:推 zeat:我也想过硬干的方式XD 可是不知道有没有更好的= =+ 04/09 16:40
2F:推 zeat:我刚刚试过将this(JFrame)加进click事件...结果更糟了Orz... 04/09 17:06
3F:→ zeat:结果连我想要取得的textfield的foucs都会一并被取得(?) 04/09 17:08
4F:→ zeat:总之更怪了...O____Q 04/09 17:09
5F:推 zeat:看起来一个一个硬干似乎OK= =+ 但是有个问题是JFrame的title 04/09 17:23
6F:→ zeat:bar 不行Orz... 这可以解吗? 04/09 17:24