春風博客

          春天里,百花香...

          導航

          <2007年12月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          統計

          公告

          MAIL: junglesong@gmail.com
          MSN: junglesong_5@hotmail.com

          Locations of visitors to this page

          常用鏈接

          留言簿(11)

          隨筆分類(224)

          隨筆檔案(126)

          個人軟件下載

          我的其它博客

          我的鄰居們

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          JTable常見用法細則

          sitinspring原創,轉載請注明作者及出處.

          JTable是Swing編程中很常用的控件,這里總結了一些常用方法以備查閱.歡迎補充,轉載請注明作者與出處.

          一.創建表格控件的各種方式:
          1)  調用無參構造函數.
          JTable table = new JTable();

          2)  以表頭和表數據創建表格.
          Object[][] cellData = {{"row1-col1""row1-col2"},{"row2-col1""row2-col2"}};
          String[] columnNames 
          = {"col1""col2"};
              
          JTable table 
          = new JTable(cellData, columnNames);

          3)  以表頭和表數據創建表格,并且讓表單元格不可改.
          String[] headers = "表頭一""表頭二""表頭三" };
          Object[][] cellData 
          = null;

          DefaultTableModel model 
          = new DefaultTableModel(cellData, headers) {

            
          public boolean isCellEditable(int row, int column) {
              
          return false;
            }

          }
          ;

          table 
          = new JTable(model);

          二.對表格列的控制
          1) 設置列不可隨容器組件大小變化自動調整寬度.
          table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

          2) 限制某列的寬度.
          TableColumn firsetColumn = table.getColumnModel().getColumn(0);
          firsetColumn.setPreferredWidth(
          30);
          firsetColumn.setMaxWidth(
          30);
          firsetColumn.setMinWidth(
          30);

          3) 設置當前列數.
          DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
          int count=5;
          tableModel.setColumnCount(count);

          4) 取得表格列數
          int cols = table.getColumnCount();

          5) 添加列
          DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
          tableModel.addColumn(
          "新列名");

          6) 刪除列
          table.removeColumn(table.getColumnModel().getColumn(columnIndex));// columnIndex是要刪除的列序號

          三.對表格行的控制
          1) 設置行高
          table.setRowHeight(20);

          2) 設置當前航數
          DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
          int n=5;
          tableModel.setRowCount(n);

          3) 取得表格行數
          int rows = table.getRowCount();

          4) 添加表格行
          DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
          tableModel.addRow(
          new Object[]{"sitinspring""35""Boss"});

          5) 刪除表格行
          DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
          model.removeRow(rowIndex);
          // rowIndex是要刪除的行序號

          四.存取表格單元格的數據
          1) 取單元格數據
          DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
          String cellValue
          =(String) tableModel.getValueAt(row, column);// 取單元格數據,row是行號,column是列號

          2) 填充數據到表格.
          注:數據是Member類型的鏈表,Member類如下:
          public class Member{
              
          // 名稱
              private String name;
              
              
          // 年齡
              private String age;
              
              
          // 職務
              private String title;
          }

          填充數據的代碼:
          public void fillTable(List<Member> members){
            DefaultTableModel tableModel 
          = (DefaultTableModel) table
            .getModel();
            tableModel.setRowCount(
          0);// 清除原有行
            
            
          // 填充數據
            for(Member member:members){
              String[] arr
          =new String[3];
              arr[
          0]=member.getName();
              arr[
          1]=member.getAge();
              arr[
          2]=member.getTitle();
              
              
          // 添加數據到表格
              tableModel.addRow(arr);
            }

            
            
          // 更新表格
            table.invalidate();
          }

          2) 取得表格中的數據
          public List<Member> getShowMembers(){
            List
          <Member> members=new ArrayList<Member>();
            
            DefaultTableModel tableModel 
          = (DefaultTableModel) table
            .getModel();
            
            
          int rowCount=tableModel.getRowCount();
            
            
          for(int i=0;i<rowCount;i++){
              Member member
          =new Member();
              
              member.setName((String)tableModel.getValueAt(i, 
          0));// 取得第i行第一列的數據
              member.setAge((String)tableModel.getValueAt(i, 1));// 取得第i行第二列的數據
              member.setTitle((String)tableModel.getValueAt(i, 2));// 取得第i行第三列的數據
              
              members.add(member);
            }

            
            
          return members;
          }

          五.取得用戶所選的行
          1) 取得用戶所選的單行
          int selectRows=table.getSelectedRows().length;// 取得用戶所選行的行數
          DefaultTableModel tableModel = (DefaultTableModel) table.getModel();

          if(selectRows==1){
            
          int selectedRowIndex = table.getSelectedRow(); // 取得用戶所選單行  
            
            .
          // 進行相關處理
          }

          2) 取得用戶所選的多行
          int selectRows=table.getSelectedRows().length;// 取得用戶所選行的行數
          DefaultTableModel tableModel = (DefaultTableModel) table.getModel();

          if(selectRows>1)
            
          int[] selRowIndexs=table.getSelectedRows();// 用戶所選行的序列
            
            
          for(int i=0;i<selRowIndexs.length;i++){
              
          // 用tableModel.getValueAt(row, column)取單元格數據
              String cellValue=(String) tableModel.getValueAt(i, 1);
            }

          }

          六.添加表格的事件處理
          view.getTable().addMouseListener(new MouseListener() {
            
          public void mousePressed(MouseEvent e) {
              
          // 鼠標按下時的處理
            }


            
          public void mouseReleased(MouseEvent e) {
              
          // 鼠標松開時的處理
            }


            
          public void mouseEntered(MouseEvent e) {
              
          // 鼠標進入表格時的處理
            }


            
          public void mouseExited(MouseEvent e) {
              
          // 鼠標退出表格時的處理
            }


            
          public void mouseClicked(MouseEvent e) {
              
          // 鼠標點擊時的處理
            }

          }
          );

          posted on 2007-12-18 11:04 sitinspring 閱讀(57196) 評論(17)  編輯  收藏 所屬分類: SwingJava基礎

          評論

          # re: JTable常見用法細則 2008-07-25 01:30 膘致男子

          謝謝  回復  更多評論   

          # re: JTable常見用法細則 2008-10-11 23:17 menghuan

          非常好,很有用,謝謝啊!  回復  更多評論   

          # re: JTable常見用法細則 2008-11-26 21:08 老歐

          很好,正需要  回復  更多評論   

          # re: JTable常見用法細則 2009-04-26 17:39 135

          很有用  回復  更多評論   

          # re: JTable常見用法細則 2010-11-13 17:40 1212

          不錯,支持一個  回復  更多評論   

          # re: JTable常見用法細則 2011-07-06 14:34 javky

          辛苦了!!  回復  更多評論   

          # re: JTable常見用法細則 2011-08-09 09:38 uytutyuty

          抄來抄去  回復  更多評論   

          # re: JTable常見用法細則[未登錄] 2011-08-10 11:23 Eric

          http://www.1000do.info/201177/203047.htm
          Jtable的高級用法  回復  更多評論   

          # re: JTable常見用法細則 2011-09-14 19:58 kier

          很好,自己探索不知道要浪費多少精力和時間,  回復  更多評論   

          # re: JTable常見用法細則[未登錄] 2011-11-18 14:11 aa

          謝謝@kier
            回復  更多評論   

          # re: JTable常見用法細則 2012-05-18 20:18 LSSB

          @Eric
          擦你妹  回復  更多評論   

          # re: JTable常見用法細則 2012-12-19 15:47 軟院11級

          太謝謝了,真的很好用。軟工大作業有希望了  回復  更多評論   

          # re: JTable常見用法細則 2013-05-26 16:01 yuna

          太感謝了!非常好!  回復  更多評論   

          # re: JTable常見用法細則 2014-05-16 14:47 JunEFan

          辛苦了,寫得很好,總結了很多東西,不用看英文的了。  回復  更多評論   

          # re: JTable常見用法細則 2014-06-26 11:37 趙開言

          很厲害@aa
            回復  更多評論   

          # re: JTable常見用法細則 2014-07-19 11:23 狂奔的螞蟻

          真心不錯,學習了,謝謝  回復  更多評論   

          # re: JTable常見用法細則 2018-10-30 08:42 zhrb

          寫的非常好,如果能在標題注明是JTable中的“DefaultTableModel”那就更好了  回復  更多評論   

          sitinspring(http://www.aygfsteel.com)原創,轉載請注明出處.
          主站蜘蛛池模板: 兰州市| 勐海县| 龙州县| 平罗县| 灵山县| 阿拉善盟| 尖扎县| 永顺县| 安康市| 江永县| 库伦旗| 徐州市| 博白县| 平阳县| 荆门市| 永福县| 施甸县| 城固县| 白沙| 堆龙德庆县| 南安市| 无为县| 库伦旗| 临洮县| 会东县| 云和县| 通道| 黔江区| 铜山县| 城固县| 绍兴市| 深水埗区| 丹棱县| 额尔古纳市| 松原市| 天门市| 葵青区| 寿阳县| 洞头县| 临泉县| 泗水县|