是否可以在abstractTableModel上重载getValueAt方法?

时间:2012-08-27 18:55:42

标签: java jtable abstracttablemodel

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

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

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

这不会太有用。

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

  • 或者我要去两个不同的桌面模型并保持所有数据分开
  • 或者另一种方法可能是在模型上有一些特定的标志(新字段),表示你使用它的表。如果你知道你的类型,可以通过setter或直接在构造函数中设置去吧。

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

答案 2 :(得分:0)

接受的答案没有错,但也要考虑第二个TableModel与第一个List分享对给定JTable的引用。单个setModel()可以通过简单地调用EnvDataModel来显示任一模型。

在此exmaple中,System.getenv()通过PropDataModel获取其数据。 System.getProperties()可以通过System获取其数据。两者都共享对TableModel first = new EnvDataModel(); TableModel second = new PropDataModel(); JTable table = new JTable(fisrt); ... table.setModel(second); 的访问权限。

{{1}}