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

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

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

    Natural

     

    JTable監(jiān)聽列寬變動

    最近遇到個關(guān)于JTable列寬變動的需求:拖動改變JTable某一列的寬度后需要做一些業(yè)務(wù)處理。

    JTable的ColumnModel有個監(jiān)聽列模型的方法(TableColumnModelListener),但這個是拖動時響應(yīng),且拿不到列信息,這不符合我想要的。

    那只能從鼠標事件的語義去分析了,在拖動列的響應(yīng)事件中判斷是否是目標列,在結(jié)束拖動時鼠標的釋放事件中去完成業(yè)務(wù)工作。

    查看了下JTable的API,可以給JTableHeader加上鼠標監(jiān)聽。

    下面代碼即監(jiān)聽“C2”列的demo:

     1 public class JTableTest extends JFrame{
     2     JScrollPane sp1 = new JScrollPane();
     3     JTable table = new JTable();
     4     DefaultTableModel tm = new DefaultTableModel();
     5     enum ColumnName {
     6         C1,C2,C3
     7     }
     8 
     9     void doSomething(){
    10         int colNum = tm.getColumnCount();
    11         forint i = 0; i < colNum; i++ ){
    12             if( ColumnName.C2.name().equals( table.getColumnName( i ) ) ){
    13                 TableColumn tc = table.getColumnModel().getColumn( i );
    14                 System.out.println( "width: " + tc.getWidth() );
    15                 // TODO : do something what you wanna 
    16             }
    17         }
    18     }
    19 
    20     public JTableTest(){
    21         this.setSize( 400300 );
    22         this.getContentPane().add( sp1, BorderLayout.CENTER );
    23         sp1.getViewport().add( table );
    24         for( ColumnName col : ColumnName.values() ){
    25             tm.addColumn( col );
    26         }
    27         table.setModel( tm );
    28         class ChangedColumn{
    29             boolean changed = false;
    30             boolean isChanged(){
    31                 return changed;
    32             }
    33             void setChanged( boolean changed ){
    34                 this.changed = changed;
    35             }
    36         }
    37         final ChangedColumn c2 = new ChangedColumn();
    38         table.getTableHeader().addMouseListener( new MouseListener(){
    39             @Override
    40             public void mouseReleased( MouseEvent e ){
    41                 System.out.println( "released" );
    42                 if( c2.isChanged() ){
    43                     doSomething();
    44                     c2.setChanged( false );
    45                 }
    46             }
    47             @Override
    48             public void mousePressed( MouseEvent e ){}
    49             @Override
    50             public void mouseExited( MouseEvent e ){}
    51             @Override
    52             public void mouseEntered( MouseEvent e ){}
    53             @Override
    54             public void mouseClicked( MouseEvent e ){}
    55         } );
    56         table.getTableHeader().addMouseMotionListener(    new MouseMotionListener(){
    57             @Override
    58             public void mouseMoved( MouseEvent e ){}
    59             @Override
    60             public void mouseDragged( MouseEvent e ){
    61                 System.out.println( "dragging" );
    62                 TableColumn changedColumn = ( (JTableHeader)e.getSource() ).getResizingColumn();
    63                 if( changedColumn != null 
    64                         && ColumnName.C2.name().equals( changedColumn.getHeaderValue() ) ){
    65                     c2.setChanged( true );
    66                 }
    67             }
    68         } );
    69         addWindowListener( new WindowAdapter(){
    70             public void windowClosing( WindowEvent e ){
    71                 System.exit( 0 );
    72             }
    73         } );
    74         setVisible( true );
    75     }
    76 
    77     public static void main( String[] args ){
    78         new JTableTest();
    79     }
    80 }

    posted on 2012-10-15 11:15 此號已被刪 閱讀(919) 評論(0)  編輯  收藏 所屬分類: JAVA

    導航

    統(tǒng)計

    常用鏈接

    留言簿(8)

    隨筆分類(83)

    隨筆檔案(78)

    文章檔案(2)

    相冊

    收藏夾(7)

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 男性gay黄免费网站| 亚洲欧美aⅴ在线资源| 中文字幕在线免费看线人| 国产在线a不卡免费视频| 亚洲AV永久无码精品一福利| 性感美女视频免费网站午夜| 亚洲一本到无码av中文字幕| 在线免费观看一级毛片| 欧洲亚洲国产精华液| 免费jjzz在线播放国产| 免费国产高清毛不卡片基地| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 亚洲人成综合在线播放| 免费A级毛片无码无遮挡内射| 2020亚洲男人天堂精品| 日本高清免费不卡在线| 成人精品综合免费视频| 亚洲一区精品无码| 午夜免费福利视频| 亚洲综合校园春色| yy6080亚洲一级理论| 久久久久女教师免费一区| 亚洲视频中文字幕| 永久免费av无码不卡在线观看| 亚洲国产综合AV在线观看| 亚洲男人的天堂在线va拉文| 在线成人精品国产区免费| 久久亚洲AV成人出白浆无码国产| 国内精品乱码卡1卡2卡3免费| 日韩在线视精品在亚洲| 国产性爱在线观看亚洲黄色一级片 | 国产精品亚洲一区二区在线观看| 亚洲国产精品成人久久蜜臀| 九九精品成人免费国产片| 亚洲欧洲日产v特级毛片| 国产免费午夜a无码v视频| 色www永久免费网站| 亚洲成人在线免费观看| 亚洲国产天堂久久久久久| 曰批视频免费40分钟试看天天| 亚洲精华国产精华精华液|