JTable合計,自己的一個例子
阿新 • • 發佈:2019-01-29
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;
/***
* 功能:處理JTable,包括現實列表,對列表改動等
* @author
*
*/
public class ReportTableModel extends DefaultTableModel {
/**
*
*/
private static final long serialVersionUID = 1L;
Object[][] data;
Object[] columnNames;
ReportTableModel(Object[][] data, Object[] columnNames) {
this.data = data;
this.columnNames = columnNames;
}
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
if(data==null)return 0;
return data.length;
}
public Object getValueAt(int row, int col) {
// System.out.println("第"+(row+1)+"行"+(col+1)+"列:"+data[row][col]);
return data[row][col];
}
// 該方法不一定要加入AbstractTableModel類,該方法設定列表的標題
public String getColumnName(int col) {
return columnNames[col] + "";
}
// 通過getClass()方法設定預設的控制元件,如true與false的預設控制元件是複選框,
// 該方法不一定要加入AbstractTableModel類
public Class getColumnClass(int c) {
if(null == getValueAt(0, c))
{//防止某一列沒有賦值,Boolean型別的話,直接在VO預設為false,所以在這不判斷。
return String.class;
}else{
return getValueAt(0, c).getClass();
}
}
// 定義可以編輯的單元,true表示可編輯,false表示不可編輯
public boolean isCellEditable(int row, int col) {
return true;
}
// 將改變後的值儲存在表格中
public void setValueAt(Object value, int row, int col) {
data[row][col] = value;
System.out.println(row + 1 + "行:" + (col + 1) + "列:" + value);
fireTableCellUpdated(row, col);
}
}
應用:
Object[][] data={{false,"欄目1"},{false,"欄目2"}};
Object[][] title={ "是否列印", "欄目名"};
ReportTableModel model = new ReportTableModel(data,o);
//計算列的值(列是固定,行迴圈)
int[] cols={1,4,7};
String[] sumCount= new String[];
String[] sumCount= new String[title.length];
for(int i=0;i<model.getRowCount();i++){
model.getValueAt(i, 1);//這裡列可做遍歷,一次性統計
}
model.addRow();
JTable tableColumn = new JTable();
tableColumn.setModel(model);