我正在制作一个使用 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);