一個應用程序有多復雜都無關緊要
用戶並需要去閱讀你的文檔
他們試著自己解決怎樣去完成給定的任務
當其它所有的事都以失敗告終時
他們更傾向於去問別的人而不是閱讀文檔
因此
作為軟件開發者
使我們的應用程序盡可能的容易和直觀
這完全取決於我們
在這篇文章中
我將會介紹你可以用來達到這一目標的幾種方法中的一種
那就是用提供線索來幫助用戶理解他的應用程序
引導用戶 讓應用程序用起來更容易的最常用的方法之一是對用戶界面的每一個要素提供細小的線索――提示
The Swing框架以工具提示窗口的形式提供了對這一方法的執行
你可以通過調用它的setToolTipText的方法來為所有的Swing組件設置一個工具提示
當工具提示設好以後
任何時候只要鼠標指針的指示器進入其中的組件
一個包含著文本(提示)的小窗口會在組件的上方顯示一會兒
這一提示的目的是讓用戶知道那些組件是用來干什麼用的
怎樣使用它們
以及你覺得哪些信息是有用的
盡管使用工具提示很直截了當
但還是有一些缺點
由於Swing的執行並不超出文本
因而工具提示只適用於很小的提示
你必須等著工具提示顯示出來
然後在它消失之前閱讀它
由於提示是顯示在組件上面的
使它們看起來多少有些打擾
正因為這個原因
它們在諸如菜單選項的這樣的組件上看起來並不那麼好
另一種常用的方法是將提示顯示在應用程序的狀態欄上
這一觀點與前面所講的一樣
也就是說
當鼠標指針指示器進入組件時提示會顯示出來
而當鼠標指針移開時它也就消失了
但是
由於提示是顯示在專為提示保留的位置上
它是可以選擇的
因而並不會遭受到工具提示的不良影響
執行鼠標在上面時的提示 不幸的是
Swing並不為狀態欄提示提供內置支持
然而
你自己執行狀態欄提示並不困難
你需要做的基本上就是為每一個你想要顯示的組件注冊一個鼠標監聽器
並實現MouseListener接口裡的mouseEnter方法和mouseExited方法
mouseEntered這一方法將為組件顯示提示
mouseExited則將其移開
事件源可以用來識別組件
並選擇要顯示哪些提示
這樣一來
你就不需要為每一個組件注冊一個不同的鼠標監聽器
MouseOverHintManager(列表A)是一種可再次使用的類
它提供了狀態欄提示的執行
它的使用是直截了當的
只要通過一個Jlabel實例去構造一個MouseOverHintManager實例
就可以用來顯示提示
調用addHintF方法或者為每一個你想要的組件設置一個提示
調用方法enableHints來為用戶界面頂端的容器(視窗
構架
對話框
等等)等用戶界面來設置提示
MouseOverHintManager方法的執行非常接近前面所介紹的
AddHint or方法
接受到一個作為參數的成分所涉及的以及與之相對應的提示
將它們保存在一個Map中以備以後修復時用
可以注意到那些提示是保存在WealHashMan的實例中的
這樣一來
在沒有更多的涉及到相應的組件時
如果需要的話它們能夠自動垃圾回收
正因為這樣
我們不需要找一種移走這些提示的方法
EnableHints這一方法將MouseOverHintManager作為一個鼠標監聽器添加到所有的作為參數被傳遞的頂端組件中
如子組件
菜單元素等等
MouseEntered方法使用源事件
也就是鼠標指針指示器所進入的組件
這一方法把這些源事件作為一個從Map重新得到它的提示的線索
並在構造器所保存的Jlabel上顯示它
MouseExited方法則將Jlabel設置成空白來清除提示
注意特殊案例 那些提示之所以有如所期望的那樣顯示是因為有一些值得注意的小竅門
首先
注意一下mouseEntered方法是為產生事件的組件而設置那些提示的
如果組件沒有提示的話
mouseEntered會檢查它的父類是否有
這一過程會持續到達到頂端的組件或找到顯示給用戶的提示的時候
這一邏輯允許你為一個容器設置一個提示
就像一個面板
讓它所有的孩子顯示相同的提示
或者為父親設置一個提示並且為孩子設置另外一個不同的提示
另一個竅門是getHintFor方法
mouseEntered調用它來為一個組件設置提示
如果它接受的作為一個參數的組件沒有提示的話
它會檢測一些特殊的案例
如果那些組件是一個Jlabel或JtableHeader
這一方法將會分別返回那些附有Jlabel組件的提示或Jtable的提示
用這樣的方法
你就不需要為一個組件設一個提示然後又再為它的標簽設一個提示
縱使它們以單獨的組件的形式顯示也無妨
使提示進入工作中 MouseOverHintDemo(列表B)是一個用來說明怎樣用MouseOverHintManager類的簡單例子
它只創建了一個有一個狀態欄來顯示提示和一些最常用的Swing組件的Jframe
這個例子很是簡單明了
它僅僅創制了用戶界面的所有組件
為它們設置提示
建立應用程序的主窗口
調用MouseOverHintManager
enableHints
注意到在建立用戶界面以後
調用enableHints作為最後的操作是很重要的
因此enablehints可以為所有的組件注冊鼠標監聽器
這是必須的
這樣一來
MouseOverHintManager從所有組件那裡接受鼠標事件
還可以為每一案例選擇合適的提示
運行這個例子時會顯示有著少數幾個控制裝置的簡單窗口
在那些組件和菜單元素上移動鼠標
可以看見在每一個應用程序的狀態欄顯示一個提示
注意一下有兩個無線電按紐顯示相同的提示
它們實際上是在他們的父面板上設置的
使用提示是讓應用程序用起來更容易的重要方法
狀態欄提示相對Swing工具提示是一個可選擇的辦法
而且它們很容易執行
用戶幾乎不需要閱讀你的說明文檔
因而
作為軟件開發者
讓我們的應用程序盡可能的容易和直觀完全取決於我們
如果你在寫一個JavaGUI
這是一個幫助添加狀態欄提示的簡單方法
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19588.html