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

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

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

    zeyuphoenix

    愿我愛的人快樂,愿愛我的人快樂,為了這些,我愿意不快樂.

    表格(懸浮框提示)

    JTableToolTip提示和其它的組件提示是一樣的,因為它們都是繼承于Jcomponent,當我們需要為我們的單元格實現ToolTip的時候,只需要復寫它的getToolTipText方法就可以了,

    看看Sun官方的例子:

           //Implement table cell tool tips.

            @Override

             public String getToolTipText(MouseEvent e) {

    取得鼠標的行和列:

               java.awt.Point p = e.getPoint();

               int rowIndex = rowAtPoint(p);

               int colIndex = columnAtPoint(p);

               int ealColumnIndex = convertColumnIndexToModel(colIndex);

    設置你需要顯示的ToolTip,然后返回

            tip = ……;

              returntip;

    同樣的JTableHeader也是如此:

           protected JTableHeader createDefaultTableHeader() {

                    returnnew JTableHeader(columnModel) {

                     @Override

                        public String getToolTipText(MouseEvent e) {

    這樣不用其它設置,JTable的基本ToolTip就實現了,它雖然比較簡單,但是最大的好處是不用自己考慮定位和顯示的問題,很多時候也就可以了.

    關于JTable的簡單ToolTip提示就算是完成了,當我們只是簡單的提示的時候,只需要復寫JTablegetToolTipTextsetToolTipText方法就可以了,上個例子就是這樣;但是當我們需要使我們的ToolTip提示不像Sun提供的那么單調,我們就需要自己來實現了.

    這時候的重點已經不在JTable上了,而在于ToolTip上面,我們可以把我們需要呈現的ToolTip實現為一個JPanel,這樣就可以在它的上面放置各種組件了,設置放圖標都可以,這個時候就需要實現這個ToolTipUIManager,這方面有很多開源的實現,以后有時間的話開個專題專門來介紹ToolTip,這里不寫了.

    對于已經實現好的我們自己的ToolTip,我們需要做的是把它注冊到我們的JTable上面,再根據鼠標的位置顯示它,如下圖所示,它可以有Title,可以有圖片,可以有正文,甚至可以再加別的組件.如下圖所示:

    我們需要的是增加監聽:

    addMouseListener(this)

    根據監聽的狀態處理ToolTip

        @Override

        publicvoid mouseExited(MouseEvent event) {

    隱藏

        @Override

        publicvoid mousePressed(MouseEvent event) {

    顯示

        @Override

        publicvoid mouseMoved(MouseEvent event) {

    判斷狀態,顯示或者隱藏.

    然后是判斷位置:

        // display directly below or above JTable band

        location.x = screenLocation.x;

        location.y = screenLocation.y + mouseEvent.getY() + 22;

        location.x = screenLocation.x +mouseEvent.getX();

        f ((location.y + size.height) > (sBounds.y + sBounds.height)) {

                  location.y = screenLocation.y - size.height;

    最后是取得鼠標所在單元格的值傳入顯示:

        Point p = mouseEvent.getPoint();

               int row = rowAtPoint(p);

               int col = columnAtPoint(p);

               if (row == -1 || col == -1) {

                  returnnull;

               }

               Object data = getValueAt(row, col);

    當然此時你可以對data做變換,從而顯示需要的值.

    使用很簡單,注冊就可以了.

    setActionRichTooltip(new RichTooltip());

    然后是另外一種ToolTip的效果,這個是一個開源的實現,只抓張圖看看就算了,和前面的實現基本類似,還比那個簡單,也是UI,Timer以及位置計算.如下圖,代碼在open就有:

    ToolTip到這兒就算完了,但是實際使用中可能有這個問題,如下圖:

    這是因為我們經過設置Renderer渲染的單元格顯示值和實際值不一樣了.但我們很多時候需要看到的其實不是它的真實值,而是渲染后的值,可以通過渲染的實現類把它取回來:

    先取得渲染類:

     TableCellRenderer cellRenderer = table.getColumnModel().getColumn(column).getCellRenderer();

    再去的渲染的控件:

     Component component = cellRenderer.getTableCellRendererComponent(table,

           table.getValueAt(row, column), false, false, row, column);

    這個時候不知道這個控件是否有getText方法,通過反射判斷,沒有則設置為””

        String text = "";

            if (component != null) {

                for (Method method : component.getClass().getMethods()) {

                    if (method.getName().equals("getText")) {

                        text = method.invoke(component).toString();

                    }

                }

            }

    最后效果如圖:

    到此為止,所有關于JTableToolTip提示就完成了,當然我實現的都是一些基本的效果,比較復雜的效果,則需要你自己去繪制和實現ToolTip,說句簡單的,技術完成了,以后就是玩色彩和審美了,做程序也就這樣了,很多時候后者重要.

    posted on 2010-04-14 23:29 zeyuphoenix 閱讀(5281) 評論(0)  編輯  收藏 所屬分類: JTable的使用

    導航

    <2010年4月>
    28293031123
    45678910
    11121314151617
    18192021222324
    2526272829301
    2345678

    統計

    常用鏈接

    留言簿(52)

    隨筆分類

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 中文字幕影片免费在线观看| 久久午夜无码免费| 永久黄网站色视频免费直播| 亚洲春色另类小说| 国产又黄又爽又猛免费app| 色欲A∨无码蜜臀AV免费播| 久久久久亚洲av成人无码电影 | 美女无遮挡免费视频网站| 中文字幕在线免费看线人| 亚洲无线码在线一区观看| 亚洲精品美女久久7777777| 全免费a级毛片免费看无码| 亚洲老熟女五十路老熟女bbw| 天天摸天天碰成人免费视频| 亚洲AV网一区二区三区| 久久久久久精品免费看SSS| 亚洲另类古典武侠| 色播在线永久免费视频| 九九免费久久这里有精品23| 亚洲精品成人片在线观看精品字幕| 亚洲精品第一国产综合亚AV| 国产男女猛烈无遮挡免费网站| 亚洲AV成人片无码网站| 国产亚洲精品不卡在线| 无码国产精品一区二区免费16 | 国产精品亚洲产品一区二区三区| 亚洲一区二区三区国产精华液| 在线jlzzjlzz免费播放| 污污的视频在线免费观看| 亚洲午夜国产精品无码老牛影视 | 亚洲男人的天堂在线va拉文 | 国产福利在线观看永久免费| 亚洲精品无码成人AAA片| 国产精品视频免费| 久久久久亚洲AV无码观看| 成人免费无码大片A毛片抽搐色欲 成人免费无码大片a毛片 | 国产hs免费高清在线观看| 你懂的免费在线观看| 亚洲已满18点击进入在线观看| 亚洲综合激情另类专区| 国产免费看JIZZ视频|