我有一個JTextField和AWT Canvas的簡單GUI(爲了防止爲什麼我使用AWT Canvas的反問題:我需要有一個窗把手)。AWT Canvas無法獲得另一個可聚焦組件的存在焦點
畫布是處理輸入事件,這意味着它必須是可以聚焦的。我通過在構造函數中使用setFocusable(true)
來保證這一點,後來使用isFocusable()
進行檢查確認它確實是可以聚焦的。
現在,JTextField在GUI打開時默認獲得焦點。到目前爲止我沒有問題。但是,沒有辦法從該JTextField獲取遠離的焦點。
文章"The AWT Focus Subsystem"明確指出,如果點擊某個可調焦組件,它將獲得焦點。這不會發生,事實上,只有當窗口被取消激活並再次激活時,我纔會收到零焦點更改事件,但是焦點會立即返回到JTextField。
顯式調用requestFocus()
和requestFocusInWindow()
也沒有幫助,後者總是返回false
。
如果我替換JTextField,我已經獲得了與任何可聚焦組件相同的結果。如果Canvas是唯一可以調焦的容器,那麼一切正常,因爲它始終有焦點。
我失去了一些東西在這裏?有沒有什麼辦法可以讓我的Canvas增益聚焦在另一個可聚焦組件的存在下,最好是不讓這個聚焦組件變焦?
你確定'setEnabled(true)'確定嗎?你可以用'isEnabled'來檢查。 – toto2 2011-05-31 13:52:23
是的,它已啓用。如果Canvas本身就在那裏,這一切都可以正常工作。就在其他可聚焦組件/剛剛用JButton嘗試過時,稍後會編輯主要問題)就會參與其中,但它根本無法獲得重點。 – pdinklag 2011-06-01 04:46:41