<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),且拿不到列信息,這不符合我想要的。

    那只能從鼠標(biāo)事件的語義去分析了,在拖動列的響應(yīng)事件中判斷是否是目標(biāo)列,在結(jié)束拖動時鼠標(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 此號已被刪 閱讀(919) 評論(0)  編輯  收藏 所屬分類: JAVA

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(8)

    隨筆分類(83)

    隨筆檔案(78)

    文章檔案(2)

    相冊

    收藏夾(7)

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品无码一区二区| 国产国拍精品亚洲AV片| 久久精品国产亚洲77777| 中文字幕永久免费| 精品亚洲一区二区三区在线播放| 白白色免费在线视频| 免费国产小视频在线观看| 日韩欧美亚洲中文乱码| 国产一区二区三区免费视频| 美女扒开尿口给男人爽免费视频 | 久久精品国产亚洲AV电影| 久久国产精品免费网站| 久久久久亚洲AV成人片| 亚洲电影在线免费观看| 亚洲中文无码a∨在线观看| 久久精品女人天堂AV免费观看| 亚洲精品国产精品国自产网站| 毛片免费观看的视频| 亚洲AV日韩AV无码污污网站| 亚洲JIZZJIZZ中国少妇中文| 韩国免费A级毛片久久| 亚洲综合一区二区国产精品| 青青青国产在线观看免费网站 | 中国好声音第二季免费播放| 亚洲va久久久噜噜噜久久狠狠| 69视频在线是免费观看| 日本亚洲免费无线码| 免费一区二区视频| 国产一区二区三区免费观在线| 亚洲第一成年人网站| 国产精品视_精品国产免费| 国产福利电影一区二区三区,免费久久久久久久精 | 国产亚洲精品线观看动态图| 久久大香伊焦在人线免费| 77777亚洲午夜久久多喷| 亚洲精品久久久www| 国产精品成人观看视频免费| 国产精品亚洲专区一区| 亚洲人成在线影院| 无码国模国产在线观看免费| 国产成人精品一区二区三区免费|