熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

JTable常見用法細則

2013-11-23 19:36:08  來源: Java核心技術 

JTable是Swing編程中很常用的控件這裡總結了一些常用方法以備查閱

  一創建表格控件的各種方式:
)  調用無參構造函數
JTable table = new JTable();
)  以表頭和表數據創建表格
Object[][] cellData = {{rowcol rowcol}{rowcol rowcol}};
String[] columnNames = {col col};
   
JTable table = new JTable(cellData columnNames);
)  以表頭和表數據創建表格並且讓表單元格不可改
String[] headers = { 表頭一 表頭二 表頭三 };
Object[][] cellData = null;

  DefaultTableModel model = new DefaultTableModel(cellData headers) {

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

  table = new JTable(model);
對表格列的控制
) 設置列不可隨容器組件大小變化自動調整寬度
tablesetAutoResizeMode(JTableAUTO_RESIZE_OFF);
) 限制某列的寬度
TableColumn firsetColumn = tablegetColumnModel()getColumn();
firsetColumnsetPreferredWidth();
firsetColumnsetMaxWidth();
firsetColumnsetMinWidth();
) 設置當前列數
DefaultTableModel tableModel = (DefaultTableModel) tablegetModel();
int count=;
tableModelsetColumnCount(count);
) 取得表格列數
int cols = tablegetColumnCount();
) 添加列
DefaultTableModel tableModel = (DefaultTableModel) tablegetModel();
tableModeladdColumn(新列名);
) 刪除列
tableremoveColumn(tablegetColumnModel()getColumn(columnIndex));// columnIndex是要刪除的列序號
對表格行的控制
) 設置行高
tablesetRowHeight();
) 設置當前航數
DefaultTableModel tableModel = (DefaultTableModel) tablegetModel();
int n=;
tableModelsetRowCount(n);
) 取得表格行數
int rows = tablegetRowCount();

  ) 添加表格行
DefaultTableModel tableModel = (DefaultTableModel) tablegetModel();
tableModeladdRow(new Object[]{sitinspring Boss});
) 刪除表格行
DefaultTableModel tableModel = (DefaultTableModel) tablegetModel();
modelremoveRow(rowIndex);// rowIndex是要刪除的行序號
存取表格單元格的數據
) 取單元格數據
DefaultTableModel tableModel = (DefaultTableModel) tablegetModel();
String cellValue=(String) tableModelgetValueAt(row column);// 取單元格數據row是行號column是列號
) 填充數據到表格
注:數據是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();
  tableModelsetRowCount();// 清除原有行
 
  // 填充數據
  for(Member member:members){
    String[] arr=new String[];
    arr[]=membergetName();
    arr[]=membergetAge();
    arr[]=membergetTitle();
   
    // 添加數據到表格
    tableModeladdRow(arr);
  }
 
  // 更新表格
  tableinvalidate();
}
) 取得表格中的數據
public List<Member> getShowMembers(){
  List<Member> members=new ArrayList<Member>();
 
  DefaultTableModel tableModel = (DefaultTableModel) table
  getModel();
 
  int rowCount=tableModelgetRowCount();
 
  for(int i=;i<rowCount;i++){
    Member member=new Member();
   
    membersetName((String)tableModelgetValueAt(i ));// 取得第i行第一列的數據
    membersetAge((String)tableModelgetValueAt(i ));// 取得第i行第二列的數據
    membersetTitle((String)tableModelgetValueAt(i ));// 取得第i行第三列的數據
   
    membersadd(member);
  }
 
  return members;
}
取得用戶所選的行
) 取得用戶所選的單行
int selectRows=tablegetSelectedRows()length;// 取得用戶所選行的行數
DefaultTableModel tableModel = (DefaultTableModel) tablegetModel();

  if(selectRows==){
  int selectedRowIndex = tablegetSelectedRow(); // 取得用戶所選單行 
 
  // 進行相關處理
}
) 取得用戶所選的多行
int selectRows=tablegetSelectedRows()length;// 取得用戶所選行的行數
DefaultTableModel tableModel = (DefaultTableModel) tablegetModel();

  if(selectRows>)
  int[] selRowIndexs=tablegetSelectedRows();// 用戶所選行的序列
 
  for(int i=;i<selRowIndexslength;i++){
    // 用tableModelgetValueAt(row column)取單元格數據
    String cellValue=(String) tableModelgetValueAt(i );
  }
}
添加表格的事件處理
viewgetTable()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) {
    // 鼠標點擊時的處理
  }
});


From:http://tw.wingwit.com/Article/program/Java/hx/201311/27152.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.