我有不同的对象,用于将数据库中的数据存储在 ArrayList<T>
中.我必须在表格中显示每个记录。我使用 AbstractTableModel
对于我正在处理的第一个对象。 AbstractTableModel
类有一个 ArrayList<Relation>
和一个 String[]
标题。
我的问题是:如何创建相同的 AbstractTableModel
可用于所有对象。我的意思是如果使用 Relation,我可以拥有 ArrayList<Relation>
, 如果有 Product, 可以有 ArrayList<Product>
..ETC。写法不同AbstrastTableModel
根据我的说法,每个人都不是一个好主意。主要问题来自 setValueAt
, getValue
, addRow
....
@Override
public void setValueAt(Object value, int row, int col) {
Relation r = data.get(row); // ArrayList<Relation> data
switch (col) {
case 0:
r.setId(value.toString());
break;
case 1: r.setName(value.toString());
break;
case 2: r.setStartBalance((Double)value);
break;
case 3: r.setCurrentBalance((Double)value);
break;
}
}
将此作为适用于所有人的单一模型进行处理的任何好主意。也可以从这里为表触发事件。
我知道这有点复杂。但结构庞大,正在创建新类 AbstractTableModel
和 JTable
对于每个对象也不是一个好主意。
你有什么建议?
最佳答案
您可以在多个数据类上创建抽象,以便它们公开 setValue(int columnNumber, Object Value) 等方法和类似的 getValue() 方法。然后你可以在这个新的抽象上写 AbstractTableModel。之后创建所需的表模型只需要更改模型构造函数中的数据类。
例如你可以有一个接口(interface):
interface DBRow
{
public void setValue(int columnNumber, Object value);
public Object getValue(int columnNumber);
}
Product 和 Relation 类都应该实现这个,然后你的模型就可以在 DBRow 接口(interface)上工作。
也可以考虑直接使用resultset来填充表格: resultset-to-tablemodel
关于java - Swing : Single AbstractTableModel for multiple objects ? ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8266629/