核心Swing組件(二) – JAVA編程語言程序開發技術文章

4.2 JToolTip類


Swing組件支持當光標停留在其上時顯示簡短的彈出信息的功能。用來顯示彈出信息的類就是JToolTip。


4.2.1 創建JToolTip


調用JComponent的public void setToolTipText(String text)方法可以使得當鼠標停留在一個安裝瞭彈出信息的組件上時自動創建JToolTip實例。我們通常並不直接調用JToolTip構造函數。隻有一個構造器,而他是無參數的變體。


工具提示的文本通常隻是一行的長度。然而,如果文本字符串以開頭(在許多情況下如此),那麼文本的內容可以任意的HTML 3.2格式化文本。例如,下面的代碼使得彈出信息如圖4-3所示:


component.setToolTipText(“Tooltip
Message”);

Swing_4_3


4.2.2 創建自定義的JToolTip對象


正如在本章稍後的“自定義JToolTip觀感”一節中所討論的,我們可以通過為JToolTip設置UIResource元素很容易的自定義所有的彈出信息的顯示特點。


JComponent類定義瞭一種簡單的方法可以使得我們自定義當光標停留在某一個特定的組件上時工具提示的顯示特點。我們隻需要簡單的繼承我們要自定義的組件類並重寫繼承的public JToolTip createToolTip()方法。當ToolTipManager決定需要顯示彈出信息的時候會調用createToolTip()方法。


要自定義彈出工具提示的外觀,隻需要重寫這個方法並自定義由繼承的方法所返回的JToolTip。例如,下面的代碼顯示瞭JButton工具提示的顏色的自定義,如圖4-4所示。


JButton b = new JButton(“Hello, World”) {
public JToolTip createToolTip() {
JToolTip tip = super.createToolTip();
tip.setBackground(Color.YELLOW);
tip.setForeground(Color.RED);
return tip;
}
};

Swing_4_4


在創建瞭JToolTip之後,我們可以配置繼承的JComponent屬性或是任何特定的JToolTip屬性,如表4-5所示。


JToolTip屬性



























屬性名
數據類型

訪問性

accessibleContext
AccessibleContext

隻讀

component
JComponent
 

讀寫

tipText
String
 

讀寫

UI
ToolTipUI

隻讀

UIClassID
String
 
 

隻讀


4.2.3 顯示位置工具提示文本


Swing組件甚至支持基於鼠標位置的不同工具提示文本的顯示。這需要重寫public boolean contains(int x, int y)方法,這是由Component類繼承的。


例如,在實現瞭前一節自定義的JButton的創建之後,工具提示文本可以依據鼠標點是否位距離組件左邊50像素之內而顯示不同的文本。


JButton button = new JButton(“Hello, World”) {
public JToolTip createToolTip() {
JToolTip tip = super.createToolTip();
tip.setBackground(Color.YELLOW);
tip.setForeground(Color.RED);
return tip;
}
public boolean contains(int x, int y) {
if (x < 50) {
setToolTipText(“Got Green Eggs?”);
} else {
setToolTipText(“Got Ham?”);
}
return super.contains(x, y);
}
};

4.2.4 自定義義JToolTip觀感


每一個已安裝的Swing觀感都會提供一個不同的JToolTip外觀以及一個默認的UIResource值設置集合。圖4-5顯示瞭預安裝的觀感類型的JToolTip組件:Motif, Widnows與Ocean。


Swing_4_5


用於JToolTip的UIResource相關的屬性顯示在表4-6中。對於JToolTip組件,有9個不同的屬性。


JToolTip UIResource元素

































屬性字符串

對象類型

ToolTip.background

Color

ToolTip.backgroundInactive

Color

ToolTip.border

Border

ToolTip.borderInactive

Color

ToolTip.font

Font

ToolTip.foreground

Color

ToolTip.foregroundInactive

Color

ToolTip.hideAccelerator

Boolean

ToolTipUI

String


正如在本章的前面所註意到的,JToolTip類支持HTML內容的顯示。這可以實現多列與多行輸入的顯示。


4.2.5 ToolTipManager類


盡管由於JComponent創建並創建並顯示其自己的JToolTip,JToolTip在某種程度上是一個被動對象,其使用也有許多可以配置的方面。然而,這些配置是由管理工具提示的類來負責的,而不是由JToolTip本身負責。管理工具提示使用的類被稱之為ToolTipManager類。由於使用瞭單例設計模式,ToolTipManager類並不存在構造函數。相反,我們可以通過ToolTipManager的靜態sharedInstance()方法獲得當前的管理器。


4.2.6 ToolTipManager屬性


一旦我們獲得瞭ToolTipManager的共享實例,我們就可以定制工具提示文本何時以及是否顯示。如表4-7所示,有五個可配置的屬性。


ToolTipManager屬性











發佈留言

屬性名
數據類型

訪問性

dimissDelay
int

讀寫