熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

用狀態欄提示改善JavaGUI

2022-06-13   來源: JSP教程 

  一個應用程序有多復雜都無關緊要用戶並需要去閱讀你的文檔他們試著自己解決怎樣去完成給定的任務當其它所有的事都以失敗告終時他們更傾向於去問別的人而不是閱讀文檔
  
  因此作為軟件開發者使我們的應用程序盡可能的容易和直觀這完全取決於我們在這篇文章中我將會介紹你可以用來達到這一目標的幾種方法中的一種那就是用提供線索來幫助用戶理解他的應用程序
  
  引導用戶
  讓應用程序用起來更容易的最常用的方法之一是對用戶界面的每一個要素提供細小的線索――提示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
  
  這個例子很是簡單明了它僅僅創制了用戶界面的所有組件為它們設置提示建立應用程序的主窗口調用MouseOverHintManagerenableHints注意到在建立用戶界面以後調用enableHints作為最後的操作是很重要的因此enablehints可以為所有的組件注冊鼠標監聽器這是必須的這樣一來MouseOverHintManager從所有組件那裡接受鼠標事件還可以為每一案例選擇合適的提示
  
  運行這個例子時會顯示有著少數幾個控制裝置的簡單窗口在那些組件和菜單元素上移動鼠標可以看見在每一個應用程序的狀態欄顯示一個提示注意一下有兩個無線電按紐顯示相同的提示它們實際上是在他們的父面板上設置的
  
  使用提示是讓應用程序用起來更容易的重要方法狀態欄提示相對Swing工具提示是一個可選擇的辦法而且它們很容易執行用戶幾乎不需要閱讀你的說明文檔因而作為軟件開發者讓我們的應用程序盡可能的容易和直觀完全取決於我們如果你在寫一個JavaGUI這是一個幫助添加狀態欄提示的簡單方法
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19588.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.