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

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

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

    Natural

     

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

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

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

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

    查看了下JTable的API,可以給JTableHeader加上鼠標(biāo)監(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 此號已被刪 閱讀(909) 評論(0)  編輯  收藏 所屬分類: JAVA

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(8)

    隨筆分類(83)

    隨筆檔案(78)

    文章檔案(2)

    相冊

    收藏夾(7)

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 日韩激情淫片免费看| 西西大胆无码视频免费| a级亚洲片精品久久久久久久| 亚洲人成网站免费播放| AA免费观看的1000部电影| 亚洲国产品综合人成综合网站| 91禁漫免费进入| 亚洲国产精品专区| 免费看美女裸露无档网站| 亚洲一级毛片免费在线观看| 在线观看成人免费视频不卡| 亚洲a级在线观看| 永久免费毛片手机版在线看| 国产精品亚洲二区在线| 亚洲中文字幕在线观看| 久久99热精品免费观看动漫 | 99免费精品视频| 西西人体44rt高清亚洲| 在线观看成人免费视频不卡| 亚洲国产aⅴ成人精品无吗| 亚洲精品国产电影| 高清一区二区三区免费视频| 亚洲AV无码一区二区三区人| 日本特黄特黄刺激大片免费| 一区二区三区免费看| 久久精品视频亚洲| 噼里啪啦电影在线观看免费高清| 国产成人亚洲综合在线| 亚洲成AV人片在线观看ww| 国产va精品免费观看| jizz18免费视频| 亚洲一级免费视频| 亚洲国产精品狼友中文久久久| 无码人妻一区二区三区免费n鬼沢 无码人妻一区二区三区免费看 | 羞羞网站在线免费观看| 国产AⅤ无码专区亚洲AV| 狼群影院在线观看免费观看直播| 亚洲中字慕日产2021| 亚洲国产精品日韩专区AV| 四虎国产成人永久精品免费| 亚洲中文字幕一区精品自拍|