我正在制作一个使用 arrayList 进行数据填充的 JTable。我在arrayList中有两组数据。一个用于一种类型的表,另一个用于另一种类型的表。
我希望做的是重载 abstractTableModel 上的 getValueAt 方法,以便它接受我想要的数据集的参数。
这是可能的还是我应该以不同的方式考虑这个?
我正在制作一个使用 arrayList 进行数据填充的 JTable。我在arrayList中有两组数据。一个用于一种类型的表,另一个用于另一种类型的表。
我希望做的是重载 abstractTableModel 上的 getValueAt 方法,以便它接受我想要的数据集的参数。
这是可能的还是我应该以不同的方式考虑这个?
没有人阻止你重载方法。只是JTable
代码不会调用你的新方法。public Object getValueAt(int rowIndex, int columnIndex)
根据您的业务逻辑,您将不得不覆盖常规并从其中调用其他方法。
你可以这样做,但问题是 Swing 组件中正在调用此方法的任何人当前都不会调用重载的方法 :)
它不会有太大用处。
从我的角度来看,您基本上有 2 个选项,因为您需要以 2 种不同的表类型呈现特定数据:
然而,从我的角度来看,第一个是推荐的方式。
接受的答案没有错,但也要考虑第二个与第一个TableModel
共享对给定的引用List
。一个单一的JTable
可以通过简单地调用显示任一模型setModel()
。
在本例中,EnvDataModel
通过 获取其数据System.getenv()
。APropDataModel
可能通过 获取其数据System.getProperties()
。两者共享对System
.
TableModel first = new EnvDataModel();
TableModel second = new PropDataModel();
JTable table = new JTable(fisrt);
...
table.setModel(second);