2012-06-22 39 views
1

Hello?任何人都有這樣的問題:光標一次閃爍在多個字段中? 在我的情況下,會發生以下情況:當您雙擊某個字段JTextField時,打開一個JDialog,關閉該對話框後關閉 ,焦點被導回到打開屏幕之前單擊的字段。光標在兩個字段中閃爍(JTextField)

會發生什麼事情是,執行此操作後,兩個字段同時閃爍(通常是第一個字段 屏幕以及efetuei雙擊字段)。 這種媒介是隨機的,有些情況下不會發生。

在調試內部類Handler時,包含在類DefaultCaret中的更具體的actionPerformed方法,實現了 那個:time是一個字段,time是另一個,它恰恰是閃爍的字段(q似乎很明顯我知道)。但它們是調用該方法的Java自己的內部類。

當使用Tab鍵傳遞字段時,光標爲false,消失。

我使用的是JDK 6


我回到焦點的invokeLater()內,但沒有得到解決。現在,這兩個同步閃光

第一的JComponent可聚焦的是閃爍的不當

我用我自己的FocusTraversalPolicy的領域之一,並可能影響?有趣的是,我的班級沒有特別的待遇。

我注意到,標準的Java類,使用Syncronized getFirstComponent()中的一個方法,但添加了相同的控制,但仍是不正常

+4

這是一些奇怪的行爲。如果您很快就沒有得到體面的答案,請考慮創建一個小程序,這是一個小程序,它編譯,運行並演示您的問題,[sscce](http://sscce.org)。 –

+1

你的描述也有點難以遵循。同樣,如果您很快就沒有得到體面的解決方案,請考慮編輯並增強您的帖子。 –

+1

請與本機操作系統,(JDK 6_xxx)和使用外觀和感覺,因爲在Windows平臺上不可能模擬..., – mKorbel

回答

5

其實它的重點問題,對我來說。

通常當JTextComponent失去焦點setCaretVisible(false)/setSelectionVisible(false)被調用,當Focus獲得相反的事情發生。

關閉後JDialog嘗試返回焦點invokeLater()。還請檢查JDialog的父母中第一個可調查的JComponent

0

出現這種情況,因爲我開發的項目是相當大的,所以沒有得到執行

該項目有很多組成部分,表和容器的小例子,這需要在同一時間集中通過。事實證明,擺在隊列中執行,大量的線程,然後調度他們去,而當他沒有完成運行它,你可以cram grabFocus()或requestFocus(),這樣做不要哭,首先他必須完成一切,然後運行我的請求重點。

解決了這種情況,使用Swing SwingUtilities.invokeLater(...);

感謝您的提示。