2010-07-12 63 views
2

我想使用這個類和一個JComponent的setToolTipText方法不叫,但低於不是代碼 顯示工具提示:使用的JToolTip

JButton btn = new JButtn("SAVE"); 
JToolTip tip_for_button = new JToolTip(); 
tip_for_button.setTipText("blah blah"); 
tip_for_button.setComponent(btn); 

爲什麼呢?

+0

您需要添加更多代碼,理想情況下是[SSCCE](http://sscce.org/)。因此,很難回答你,因爲我們錯過了所有的背景。您提供的內容不足以描述問題。 – Gnoupi 2010-07-12 15:27:41

+0

上述組件只是簡單地插入帶有BorderLayout容器的JFrame窗口中......我不認爲有必要顯示問題解決方案。 但是,謝謝。 – xdevel2000 2010-07-12 15:41:35

回答

0

什麼是tip_for_button?對於它的工作,我敢肯定,tip_for_button必須tip

+0

對不起,我更改了代碼,但這不是問題。 – xdevel2000 2010-07-12 17:32:08

2

好了,因爲所有實際捕獲鼠標事件並顯示工具提示是ToolTipManager(這個類的一個實例是單身的代碼,在應用程序中唯一)和ToolTipManager始終在確定要顯示的工具提示時調用JComponent.createToolTip()方法。所以,如果你想使用自己的工具提示,你必須覆蓋此方法並寫出這樣的事:

JButton btn = new JButton("SAVE"){ 

     public JToolTip createToolTip() { 
      JToolTip tip_for_button = new JToolTip(){ 
       public String getTipText() { 
        return "blah blah"; 
       } 
      }; 
      tip_for_button.setComponent(this); 
      return tip_for_button; 
     } 
     }; 
     btn.setToolTipText("notnull"); 

setToolTipText是強制性的,或者提示不顯示出來,傳遞給它的文本始終設爲由Component創建的工具提示,所以如果你想要不可變的文本,你可以覆蓋JToolTip.getTipText()

+0

嗯,我試過了,但它不起作用......你確定它適合你嗎? – 2010-07-12 16:11:53

+0

@Sylvain M修正的代碼,現在它工作。 – Taisin 2010-07-12 16:43:30

+0

Thx通過閱讀API並進行嘗試,我的結論是,如果不調用setToolTipText(),則不顯示任何工具提示。我不知道我們是否正確,但目前,只有這種解決方案似乎可行... – 2010-07-13 06:30:46