1

我正在制作一个使用 arrayList 进行数据填充的 JTable。我在arrayList中有两组数据。一个用于一种类型的表,另一个用于另一种类型的表。

我希望做的是重载 abstractTableModel 上的 getValueAt 方法,以便它接受我想要的数据集的参数。

这是可能的还是我应该以不同的方式考虑这个?

4

3 回答 3

2

没有人阻止你重载方法。只是JTable代码不会调用你的新方法。public Object getValueAt(int rowIndex, int columnIndex)根据您的业务逻辑,您将不得不覆盖常规并从其中调用其他方法。

于 2012-08-27T18:59:48.213 回答
0

你可以这样做,但问题是 Swing 组件中正在调用此方法的任何人当前都不会调用重载的方法 :)

它不会有太大用处。

从我的角度来看,您基本上有 2 个选项,因为您需要以 2 种不同的表类型呈现特定数据:

  • 要么我会选择 2 个不同的表模型并将所有数据分开
  • 或者另一种方法可能是在模型上有一些特定的标志(新字段),这将指示您在其中使用它的表。如果您知道要使用哪种类型,则可以通过 setter 或直接在构造函数中设置该标志。

然而,从我的角度来看,第一个是推荐的方式。

于 2012-08-27T19:04:36.653 回答
0

接受的答案没有错,但也要考虑第二个与第一个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);
于 2012-08-28T03:36:03.787 回答