2012-06-12 37 views
1

我已經在Java Swing中創建了一個即時搜索字段。我有一個JTextField,您可以在其中輸入要搜索的內容,並在JScrollPane中包含輸入內匹配的JList。當您在JTextField中編寫代碼時,它將控制JScrollPane:它的內容以及是否應該可見。激活Java Swing工具提示時會發生什麼?

當我使用它創建示例窗口時,它工作正常,但不在我的大GUI中。我無法解釋GUI,所以我不指望你完全解決這個問題,但也許可以回答一個問題。

事情是,當JTextField爲空或我們發現沒有命中時,列表被隱藏(setVisible(false))。當你開始輸入時,它至少發現一個項目,它顯示(setVisible(true))。當我啓動我的GUI時,我開始在搜索字段中輸入內容,該列表不會顯示。它根本不會出現。我調試了代碼,並將scrollpane設置爲visible = true。它根據運行代碼是可見的,但我看不到它,我無法與它交互。這不是隱藏在別的東西背後。

現在到有趣的事情。如果我輸入應該生成命中的內容,然後將鼠標懸停在JTextField上,激活它的'工具提示,JScrollBar就會出現!發生這種情況後,搜索欄會正常動作,直至關閉窗口。可見標誌沒有改變,但不知何故,它決定現在我們可以畫它。

現在我想知道,當顯示工具提示時會發生什麼?是否有一些特殊的繪畫可以稱作我自己?

+1

打擾請編輯您的問題包括[SSCCE(http://sscce.org/)表現出你所描述的效果。 – trashgod

回答

2

在調用setVisible之後,您應該在包含滾動窗格和文本字段的組件上調用revalidate()。一般規則是,如果您在之後更改容器組件的佈局,則容器已佈置並顯示給用戶,您應該在其上調用revalidate

讓我知道這是否有幫助!

+0

工作奇蹟!非常感謝! – Helena