<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JAVA ToolTip簡單使用

    Posted on 2008-05-11 11:14 stonebow 閱讀(5885) 評論(0)  編輯  收藏 所屬分類: JAVA SWING
     

    TOOLTIP的使用

    JToolTip是指當鼠標停留在一個控件上時顯示的一個包含相關信息的方框,其中可以使用setToolTipText()方法來設置其中的內容,這里可以使用HTML語言來實現更多的效果(換行、表格、圖片等),顯示內容還是很多的。下面是JDK源代碼:

    public void setToolTipText(String text) {

            String oldText = getToolTipText();

            putClientProperty(TOOL_TIP_TEXT_KEY, text);

            ToolTipManager toolTipManager = ToolTipManager.sharedInstance();

            if (text != null) {

                 if (oldText == null) {

                    toolTipManager.registerComponent(this);

                 }

            } else {

                toolTipManager.unregisterComponent(this);

            }

        }

             從上面代碼可以看出,這里有一個putClientProperty方法,用來設置TOOL_TIP_TEXT_KEY的屬性值為text(這好像是個哈希表的樣子)。oldText先從getToolTipText()方法中取,如果取到的是空的(null)并且傳進來的text不為空,就注冊給這個組件一個ToolTip

    這個控件是非常有用的,其中String getToolTipText(MouseEvent)是每個JComponent都實現的方法,用來獲取JToolTip控件顯示的內容,此方法默認JDK代碼為:

    public String getToolTipText() {

            return (String)getClientProperty(TOOL_TIP_TEXT_KEY);

        }

             就是從TOOL_TIP_TEXT_KEY屬性把值取出來作為返回值。在ToolTipManagershow方法中,就有這樣一句:

    toolTipText = insideComponent.getToolTipText();

    這樣就說明了如果組件重載了getToolTipText()方法,就可以在顯示ToolTip的時候指定內容了。如果要在控件的不同位置顯示不同的ToolTip,要重載public String getToolTipText(MouseEvent event)方法,下面是ToolTipManager類處理鼠標移動的代碼:

    public void mouseMoved(MouseEvent event) {

            if (tipShowing) {

                checkForTipChange(event);

            }

            else if (showImmediately) {

                JComponent component = (JComponent)event.getSource();

                toolTipText = component.getToolTipText(event);

                if (toolTipText != null) {

                   preferredLocation = component.getToolTipLocation(event);

                    mouseEvent = event;

                    insideComponent = component;

                    exitTimer.stop();

                    showTipWindow();

                }

            }

            else {

                // Lazily lookup the values from within insideTimerAction

                insideComponent = (JComponent)event.getSource();

                mouseEvent = event;

                toolTipText = null;

                enterTimer.restart();

            }

       }

             加亮顯示的就是使用了重載方法的地方(還有其他一些地方,這里沒全列)。

             上面的邏輯可能有些混亂,主要是說幾個類之間的關系(JComponentJToolTipToolTipManager三個類),如果要利用SWING顯示ToolTip,可以對上面的類方法進行重載或對類進行繼承來達到自己所需要的效果。例如:

    private class TipPanel extends JPanel

        {

            public TipPanel()

            {

                this.setSize(300, 300);

                this.setBorder(new javax.swing.border.SoftBevelBorder (javax.swing.border.BevelBorder.RAISED));

            }

            public String getToolTipText(MouseEvent event)

            {

                return event.getPoint().toString();

            }

        }

    就重載了JComponentgetToolTipText(MouseEvent)方法,這樣就可以在此JPanel中移動鼠標的時候看到提示框中的變化了。


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲熟妇丰满多毛XXXX| 亚洲成人影院在线观看| 亚洲免费视频在线观看| 精品国产免费人成网站| 中文字幕在线亚洲精品| 一级午夜免费视频| 伊人久久大香线蕉亚洲五月天 | 亚洲一级片在线观看| 曰批全过程免费视频播放网站 | 亚洲日韩中文字幕无码一区| 无码国产精品一区二区免费| 亚洲中文字幕久在线| 成人免费视频试看120秒| 亚洲日本在线电影| 亚洲av无码乱码在线观看野外| 免费人成大片在线观看播放电影| 亚洲一区无码精品色| 成人性生交大片免费看中文| 亚洲最大的成网4438| 无码国产精品一区二区免费虚拟VR| 亚洲精品国产高清在线观看| 又爽又黄无遮挡高清免费视频| 91av免费在线视频| 亚洲制服中文字幕第一区| 无码人妻精品一二三区免费| 精品视频免费在线| 亚洲AV午夜成人影院老师机影院| 91成年人免费视频| 成人免费网站视频www| 久久亚洲AV无码精品色午夜麻| 可以免费看的卡一卡二| 天天综合亚洲色在线精品| 亚洲精品亚洲人成在线观看| 2015日韩永久免费视频播放| 亚洲精品亚洲人成在线| 亚洲综合精品香蕉久久网| 在免费jizzjizz在线播| 久久亚洲精品11p| 亚洲小视频在线观看| 国产自产拍精品视频免费看| baoyu116.永久免费视频|