和風(fēng)細(xì)雨

          世上本無難事,心以為難,斯乃真難。茍不存一難之見于心,則運(yùn)用之術(shù)自出。

          JTable常見用法細(xì)則

          JTable是Swing編程中很常用的控件,這里總結(jié)了一些常用方法以備查閱.

          一.創(chuàng)建表格控件的各種方式:
          1)  調(diào)用無參構(gòu)造函數(shù).
          JTable table = new JTable();
          2)  以表頭和表數(shù)據(jù)創(chuàng)建表格.
          Object[][] cellData = {{"row1-col1", "row1-col2"},{"row2-col1", "row2-col2"}};
          String[] columnNames = {"col1", "col2"};
             
          JTable table = new JTable(cellData, columnNames);
          3)  以表頭和表數(shù)據(jù)創(chuàng)建表格,并且讓表單元格不可改.
          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) 設(shè)置列不可隨容器組件大小變化自動調(diào)整寬度.
          table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
          2) 限制某列的寬度.
          TableColumn firsetColumn = table.getColumnModel().getColumn(0);
          firsetColumn.setPreferredWidth(30);
          firsetColumn.setMaxWidth(30);
          firsetColumn.setMinWidth(30);
          3) 設(shè)置當(dāng)前列數(shù).
          DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
          int count=5;
          tableModel.setColumnCount(count);
          4) 取得表格列數(shù)
          int cols = table.getColumnCount();
          5) 添加列
          DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
          tableModel.addColumn("新列名");
          6) 刪除列
          table.removeColumn(table.getColumnModel().getColumn(columnIndex));// columnIndex是要刪除的列序號
          三.對表格行的控制
          1) 設(shè)置行高
          table.setRowHeight(20);
          2) 設(shè)置當(dāng)前航數(shù)
          DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
          int n=5;
          tableModel.setRowCount(n);
          3) 取得表格行數(shù)
          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是要刪除的行序號
          四.存取表格單元格的數(shù)據(jù)
          1) 取單元格數(shù)據(jù)
          DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
          String cellValue=(String) tableModel.getValueAt(row, column);// 取單元格數(shù)據(jù),row是行號,column是列號
          2) 填充數(shù)據(jù)到表格.
          注:數(shù)據(jù)是Member類型的鏈表,Member類如下:
          public class Member{
              // 名稱
              private String name;
             
              // 年齡
              private String age;
             
              // 職務(wù)
              private String title;
          }
          填充數(shù)據(jù)的代碼:
          public void fillTable(List<Member> members){
            DefaultTableModel tableModel = (DefaultTableModel) table
            .getModel();
            tableModel.setRowCount(0);// 清除原有行
           
            // 填充數(shù)據(jù)
            for(Member member:members){
              String[] arr=new String[3];
              arr[0]=member.getName();
              arr[1]=member.getAge();
              arr[2]=member.getTitle();
             
              // 添加數(shù)據(jù)到表格
              tableModel.addRow(arr);
            }
           
            // 更新表格
            table.invalidate();
          }
          2) 取得表格中的數(shù)據(jù)
          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行第一列的數(shù)據(jù)
              member.setAge((String)tableModel.getValueAt(i, 1));// 取得第i行第二列的數(shù)據(jù)
              member.setTitle((String)tableModel.getValueAt(i, 2));// 取得第i行第三列的數(shù)據(jù)
             
              members.add(member);
            }
           
            return members;
          }
          五.取得用戶所選的行
          1) 取得用戶所選的單行
          int selectRows=table.getSelectedRows().length;// 取得用戶所選行的行數(shù)
          DefaultTableModel tableModel = (DefaultTableModel) table.getModel();

          if(selectRows==1){
            int selectedRowIndex = table.getSelectedRow(); // 取得用戶所選單行 
           
            .// 進(jìn)行相關(guān)處理
          }
          2) 取得用戶所選的多行
          int selectRows=table.getSelectedRows().length;// 取得用戶所選行的行數(shù)
          DefaultTableModel tableModel = (DefaultTableModel) table.getModel();

          if(selectRows>1)
            int[] selRowIndexs=table.getSelectedRows();// 用戶所選行的序列
           
            for(int i=0;i<selRowIndexs.length;i++){
              // 用tableModel.getValueAt(row, column)取單元格數(shù)據(jù)
              String cellValue=(String) tableModel.getValueAt(i, 1);
            }
          }
          六.添加表格的事件處理
          view.getTable().addMouseListener(new MouseListener() {
            public void mousePressed(MouseEvent e) {
              // 鼠標(biāo)按下時的處理
            }

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

            public void mouseEntered(MouseEvent e) {
              // 鼠標(biāo)進(jìn)入表格時的處理
            }

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

            public void mouseClicked(MouseEvent e) {
              // 鼠標(biāo)點(diǎn)擊時的處理
            }
          });

          posted on 2008-02-21 20:35 和風(fēng)細(xì)雨 閱讀(5671) 評論(1)  編輯  收藏

          評論

          # re: JTable常見用法細(xì)則 2008-04-10 22:11 YANGH-7

          非常感謝!!!!!!!  回復(fù)  更多評論   


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 延安市| 延津县| 象山县| 子洲县| 和政县| 铜梁县| 芜湖市| 任丘市| 平果县| 通榆县| 邹平县| 凌源市| 武冈市| 永寿县| 灵台县| 九台市| 沂水县| 郯城县| 南安市| 桐乡市| 江源县| 牙克石市| 满洲里市| 大安市| 镶黄旗| 城市| 江陵县| 太仓市| 陕西省| 柘荣县| 曲麻莱县| 阳谷县| 昂仁县| 巴林左旗| 西安市| 贡山| 阿荣旗| 泰安市| 改则县| 广灵县| 平泉县|