java something

          不要以為......很遙遠
          隨筆 - 23, 文章 - 1, 評論 - 2, 引用 - 0
          數據加載中……

          JTable

          一.創建表格控件的各種方式:
          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);
          
          二.對表格列的控制
          0)獲取JTable中特定單元格的位置
          table.addMouseListener(new MouseListener() {
                  public void mouseClicked(MouseEvent e) {
                             int row = jt.rowAtPoint(e.getPoint());
                             int col = jt.columnAtPoint(e.getPoint());
          }
          });
             
          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 2010-10-08 08:37 Jamie 閱讀(303) 評論(0)  編輯  收藏 所屬分類: swing


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


          網站導航:
           
          主站蜘蛛池模板: 乌拉特后旗| 阿尔山市| 新兴县| 贵溪市| 茶陵县| 天祝| 咸丰县| 津南区| 太仆寺旗| 潜山县| 泉州市| 黄梅县| 抚州市| 锦屏县| 富宁县| 桂林市| 鹿邑县| 嘉兴市| 大兴区| 临高县| 新安县| 高邮市| 汉沽区| 申扎县| 濮阳市| 沙河市| 确山县| 吉木萨尔县| 清新县| 黑山县| 鹤山市| 庆云县| 巩留县| 宜丰县| 龙陵县| 白河县| 河北区| 大兴区| 博客| 大同市| 和龙市|