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


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


    網站導航:
     
    主站蜘蛛池模板: 免费观看美女用震蛋喷水的视频| 一个人看的www视频免费在线观看| 无码精品人妻一区二区三区免费看| 亚洲综合色视频在线观看| 亚洲国产成人AV网站| 日本免费无遮挡吸乳视频电影| 亚洲熟女综合一区二区三区| 国产免费av片在线看| 亚洲精品无码少妇30P| 日韩毛片免费在线观看| 日韩在线视精品在亚洲| 全黄性性激高免费视频| 理论秋霞在线看免费| 亚洲精品尤物yw在线影院| xxxxx做受大片在线观看免费 | 最近最好的中文字幕2019免费 | 亚洲人成自拍网站在线观看| 最近中文字幕免费mv视频8| 亚洲精品国产首次亮相| 日韩亚洲国产二区| 三年在线观看免费观看完整版中文| 在线观看亚洲av每日更新| 久爱免费观看在线网站| 亚洲中文字幕AV在天堂| 国产成人aaa在线视频免费观看| 一级看片免费视频| 亚洲综合小说久久另类区| 女人18特级一级毛片免费视频| 国产AV日韩A∨亚洲AV电影 | 亚洲综合最新无码专区| 国产免费爽爽视频在线观看 | AV在线播放日韩亚洲欧| 中文字幕无码免费久久| 亚洲高清中文字幕免费| 亚洲欧洲国产成人综合在线观看 | 三级黄色免费观看| 亚洲一级毛片中文字幕| 亚洲成a人片在线观看国产| 成人无码WWW免费视频| 国产精品亚洲四区在线观看| 亚洲中文无韩国r级电影|