2012-03-29 14 views
4

我的應用程序中的工具提示可能會很長,因此我希望它們有換行符。在Java中製作所有工具提示(Swing)

我不想使用HTML,因爲我寧願設置我的工具提示的(最大)寬度,而不是動態地斷行。

在接受的答案中,這個類似的問題Multi-line tooltips in Java?我讀了關於JMultiLineToolTip。不幸的是,提供的鏈接不再工作,並且在那裏有許多不同的JMultiLineToolTip。所以我的兩個問題:

  1. 其中JMultiLineToolTip是一個很好的使用?
  2. 如何在我的應用程序中使用這樣的類來表示全部工具提示?

編輯:因爲每個人似乎都建議使用HTML的,是有使用HTML的方式來定義我的提示,以像素寬度(單位或其他單位比字符數)?

回答

6

如果你不怕延長擺動工具提示,你可以創建自己的JMultiLineToolTip:

  1. 擴展的JToolTip在擴展工具提示組件實現,
  2. 設置自定義的工具提示UI在customUI實施
  3. 實現paint()方法寫在多行指定的字符串

Here is an example - 它展示瞭如何使用它,以及

但是,爲了回答你的問題:

  1. 這JMultiLineToolTip是一個很好的使用?

    使用<html>

  2. 我怎麼可以用這樣一個類來表示我的應用程序的所有工具提示的?

    根據compopnent,這很容易但很繁瑣,因爲您將不得不覆蓋creatreToolTip() API。但是,如果您想要在全局範圍內進行更改,您可以:

    (i)簡單的方法 - 在執行開始時將您的自定義工具提示UI註冊爲UIManager

    UIManager.put("ToolTipUI", "SeNormToolTipUI");

    UIManager.put("SeNormToolTipUI",Class.forName(multiLineToolTipUIClassName));

    (II)複雜的方式

    你將不得不開始實現自己的外表和感覺。在外觀和感覺的實現中,您將提供ToolTipUI的默認值作爲您的UI實現,然後將該外觀設置爲您正在運行的應用程序。例如,看看MetalLookAndFeel implementation。你可以擴展這個部分並在lnf上實現。

所以,最好是使用<html>

+0

爲什麼這麼複雜? – lzdt 2012-03-29 20:54:20

+1

我並不是說複雜=困難。我的意思是寧可不必要。 – 2012-03-29 20:59:08

+0

謝謝!像魅力一樣工作! – itshorty 2012-07-27 12:10:35

4

1)Html是最簡單的方式對普通JToolTip

2)使用JWindowJTextArea(un_decorated JDialog),更好的方式是JTextPane(支持字體文字),

  • 缺點Vantage是你必須手動設置窗口的Point,你必須手動setInitialDelaysetDismissDelay(鞦韆定時器)設置,setVisible(true/false)

  • 的好處是,你使用完全可管理的頂層容器定義爲自己的父

3)I使用JLabelHtml格式化和stylled文本添加到GlassPane,注意到最簡單的替代方法是使用non_opaque JLayeredPane(的Java6)或JLayer(Java7)