使用 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));
JTable 对象创建一个 DefaultTableModel 因为它控制表中数据的显示方式,并将数据管理留给表模型。如果模型不是用户定义的,则使用 DefaultTableModel。您可以通过查看 JTable.

model 中的模型来验证这是否属实;边界崩溃:崩溃;宽度:100%;”>
TableModel byDefault = 例子JTable.getModel();
System.out.println(exampleJTable.getValueAt(2, 2).toString());
接口 TableModel 定义数据如何与 JTable 交互。这样可以更轻松地在 Java 中创建和使用表。一旦表模型与 JTable 关联,您就不必担心 JTable 如何访问数据。您所要担心的就是创建一个模板并使用它。

有两个类实现 TableModel 接口,DefaultTableModel AbstractTableModel.
  • AbstractTableModel 实现了大多数 TableModel 方法。
  • DefaultTableModel 是 AbstractTableModel 的子类,具有三个实现的方法,其数据存储在一个数组中。
    • public int getRowCount(): 返回 行数.
    • public int getColumnCount():返回列数。
    • public Object getValueAt(int row, int column):返回 (row, column) 框中的对象。
在使用 AbstractTableModel DefaultTableModel 与数据相关。DefaultTableModel 使用 Vector 结构。这个实现是 支持 通过 Java 和编程的角度来看也是如此。最主要的是 完成后,您仍然需要知道此实现是否导致应用程序出现问题。

使用 AbstractTableModel 可以自由存储数据,但必须实现允许与 JTable 交互的方法。实现的方法数量取决于数据的管理方式。要阅读,只有提到的 3 种方法就足够了,但要修改(添加、删除行或列),您需要实现其他方法来修改存储在表模板中的数据.

创建表模型

class Model 扩展 AbstractTableModel{
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;
}
}
此代码将模板与 table
//创建JTableJTable 表 = new JTable();
//创建模板
Model =new Model(data, title);
//将模板链接到 JTable
table.setModel(模型);