<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做受大片免费| 亚洲国产精品午夜电影| 亚洲精品国产精品乱码视色 | 最新精品亚洲成a人在线观看| 久久九九全国免费| 亚洲一级毛片视频| 国产V亚洲V天堂无码| 又黄又爽的视频免费看| 操美女视频免费网站| 无码av免费网站| 中文在线观看免费网站| 免费又黄又爽又猛大片午夜| 亚洲色中文字幕在线播放| 亚洲精品美女在线观看| 亚洲av日韩av天堂影片精品| 在线精品亚洲一区二区三区| 国产中文字幕免费观看| 韩国日本好看电影免费看| 免费a级毛片无码a∨蜜芽试看| 4455永久在线观免费看| 最近免费中文字幕大全高清大全1 最近免费中文字幕mv在线电影 | 亚洲手机中文字幕| 亚洲四虎永久在线播放| 久久精品国产亚洲AV麻豆不卡| 国产aⅴ无码专区亚洲av麻豆| 亚洲精品高清一二区久久| 国产精品免费播放| 国产精品视_精品国产免费| 色播在线永久免费视频| 午夜dj免费在线观看| 韩国18福利视频免费观看| 最近免费中文字幕4| 成人免费视频88| 日韩免费无码一区二区视频| 成人免费无码精品国产电影| 日韩在线看片免费人成视频播放| 精品免费国产一区二区三区| 国产又黄又爽又刺激的免费网址 | 蜜芽亚洲av无码一区二区三区| 亚洲av无码片vr一区二区三区|