使用 AbstractTableModel 创建 JTable
每个 JTable 都有一个与之关联的模型。您可能没有意识到这一点,但它是在创建二维数组时默认创建的:对象[][] 数据 = {{1,2,3},{2,3,4},{4,5,6},{7,8,9}}; 字符串[] title= {Column1”, Column2”, Column3”}; JTable 示例JTable = new JTable (数据、列名)}; |
幸好, 您可以使用 JTable 对象,而无需通过表模板。例如,要找出单元格 (2, 3) 的方法,请使用方法 getValueAt:
System.out.println(exampleJTable.getValueAt(2, 2)); |
TableModel byDefault = 例子JTable.getModel(); System.out.println(exampleJTable.getValueAt(2, 2).toString()); |
有两个类实现 TableModel 接口,DefaultTableModel 和 AbstractTableModel.
- AbstractTableModel 实现了大多数 TableModel 方法。
- DefaultTableModel 是 AbstractTableModel 的子类,具有三个实现的方法,其数据存储在一个数组中。
- public int getRowCount(): 返回 行数.
- public int getColumnCount():返回列数。
- public Object getValueAt(int row, int column):返回 (row, column) 框中的对象。
使用 AbstractTableModel 可以自由存储数据,但必须实现允许与 JTable 交互的方法。实现的方法数量取决于数据的管理方式。要阅读,只有提到的 3 种方法就足够了,但要修改(添加、删除行或列),您需要实现其他方法来修改存储在表模板中的数据.
创建表模型
class Model 扩展 AbstractTableModel{此代码将模板与 table
private Object[][] 数据;
private String[] 标题;
public Model(Object[][] data, String[] title){
this.data = 数据;
this.title = 标题;
}
/**
* 返回列标题和 index
*/
public String getColumnName(int col) {
return this.title[col];
}
/**
* 返回列数
*/
public int getColumnCount() {
return this.title.length;
}
/**
* 返回行数
*/
public int getRowCount() {
return this.data.length;
}
/**
* 返回行和列交集处的对象
*/
public 对象 getValueAt(int row, int col) {
return this.data[row][col];
}
/**
* 修改行列交集处的对象
*/
public void setValueAt(Object value, int row, int col) {
this.data[row][col] = value;
}
}
//创建JTable JTable 表 = new JTable(); //创建模板 Model =new Model(data, title); //将模板链接到 JTable table.setModel(模型); |