春風(fēng)博客

          春天里,百花香...

          導(dǎo)航

          <2018年10月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          統(tǒng)計(jì)

          公告

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

          Locations of visitors to this page

          常用鏈接

          留言簿(11)

          隨筆分類(224)

          隨筆檔案(126)

          個(gè)人軟件下載

          我的其它博客

          我的鄰居們

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          JTable常見用法細(xì)則

          sitinspring原創(chuàng),轉(zhuǎn)載請(qǐng)注明作者及出處.

          JTable是Swing編程中很常用的控件,這里總結(jié)了一些常用方法以備查閱.歡迎補(bǔ)充,轉(zhuǎn)載請(qǐng)注明作者與出處.

          一.創(chuàng)建表格控件的各種方式:
          1)  調(diào)用無(wú)參構(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);

          二.對(duì)表格列的控制
          1) 設(shè)置列不可隨容器組件大小變化自動(dòng)調(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是要?jiǎng)h除的列序號(hào)

          三.對(duì)表格行的控制
          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是要?jiǎng)h除的行序號(hào)

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

          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)按下時(shí)的處理
            }


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


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


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


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

          }
          );

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

          評(píng)論

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

          謝謝  回復(fù)  更多評(píng)論   

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

          非常好,很有用,謝謝啊!  回復(fù)  更多評(píng)論   

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

          很好,正需要  回復(fù)  更多評(píng)論   

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

          很有用  回復(fù)  更多評(píng)論   

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

          不錯(cuò),支持一個(gè)  回復(fù)  更多評(píng)論   

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

          辛苦了!!  回復(fù)  更多評(píng)論   

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

          抄來(lái)抄去  回復(fù)  更多評(píng)論   

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

          http://www.1000do.info/201177/203047.htm
          Jtable的高級(jí)用法  回復(fù)  更多評(píng)論   

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

          很好,自己探索不知道要浪費(fèi)多少精力和時(shí)間,  回復(fù)  更多評(píng)論   

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

          謝謝@kier
            回復(fù)  更多評(píng)論   

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

          @Eric
          擦你妹  回復(fù)  更多評(píng)論   

          # re: JTable常見用法細(xì)則 2012-12-19 15:47 軟院11級(jí)

          太謝謝了,真的很好用。軟工大作業(yè)有希望了  回復(fù)  更多評(píng)論   

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

          太感謝了!非常好!  回復(fù)  更多評(píng)論   

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

          辛苦了,寫得很好,總結(jié)了很多東西,不用看英文的了。  回復(fù)  更多評(píng)論   

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

          很厲害@aa
            回復(fù)  更多評(píng)論   

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

          真心不錯(cuò),學(xué)習(xí)了,謝謝  回復(fù)  更多評(píng)論   

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

          寫的非常好,如果能在標(biāo)題注明是JTable中的“DefaultTableModel”那就更好了  回復(fù)  更多評(píng)論   

          sitinspring(http://www.aygfsteel.com)原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處.
          主站蜘蛛池模板: 黔西县| 六枝特区| 溧水县| 晋州市| 松潘县| 阿城市| 建宁县| 屏东县| 武强县| 内黄县| 岫岩| 绥中县| 那坡县| 久治县| 康乐县| 台南县| 曲沃县| 行唐县| 讷河市| 司法| 逊克县| 平定县| 鸡泽县| 伊金霍洛旗| 云龙县| 荥经县| 崇阳县| 扎鲁特旗| 辛集市| 广元市| 万安县| 临沧市| 将乐县| 工布江达县| 绵竹市| 博客| 濮阳县| 区。| 承德县| 海门市| 织金县|