<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中移動鼠標的時候看到提示框中的變化了。


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


    網站導航:
     
    主站蜘蛛池模板: 久久水蜜桃亚洲AV无码精品| 黄色永久免费网站| 亚洲最大的成人网| 国内一级一级毛片a免费| 一区二区三区AV高清免费波多| 无码乱人伦一区二区亚洲| 午夜网站免费版在线观看| 国产免费一区二区三区免费视频| 久久精品蜜芽亚洲国产AV| 国产美女精品久久久久久久免费| 三级黄色在线免费观看| 日本亚洲色大成网站www久久| 国产精品亚洲高清一区二区| 1000部羞羞禁止免费观看视频| 亚洲AV无码一区二区三区性色| 亚洲高清专区日韩精品| 免费无码又爽又刺激高潮 | 亚洲av纯肉无码精品动漫| 亚洲亚洲人成综合网络| 午夜a级成人免费毛片| 久久精品中文字幕免费| jizzjizz亚洲日本少妇| 久久亚洲sm情趣捆绑调教| 亚洲国产成人精品女人久久久| 91制片厂制作传媒免费版樱花| 污视频网站在线免费看| 亚洲福利视频网址| 国产亚洲美日韩AV中文字幕无码成人 | 国产中文字幕在线免费观看| 亚洲乱亚洲乱妇24p| 久久水蜜桃亚洲av无码精品麻豆| 男人的天堂亚洲一区二区三区 | 999国内精品永久免费视频| xxxxx做受大片视频免费| 亚洲熟妇自偷自拍另欧美| 亚洲综合自拍成人| 亚洲熟妇无码AV在线播放| 免费永久看黄在线观看app| 9久9久女女免费精品视频在线观看| 成人片黄网站色大片免费观看APP| 精品亚洲成a人在线观看|