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);

二.對錶格列的控制
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) {
    
// 鼠標點擊時的處理
  }

}
);
相關文章
相關標籤/搜索