我有一些数据必须通过两个 JTable 显示;数据是相同的,但每个表的显示方式都会有所不同。此外,我从外部连接接收数据(在这种情况下为 JMS,但这并不重要,它可能是数据库或其他)。
由于我是 Swing 的新手,我仍然对谁应该触发事件、谁应该听它们以及如何进行一些困惑,以便修改我的数据集,我将同时更新两个表。
现在,我的数据集结构的一个小例子以及一些虚拟数据:
class Student{ String name; Classroom classroom; boolean goodStudent}
class Classroom{ Sting name; List<String> coursesTaught; List<Student> students;}
public List<Classroom> classes;
基本上,我的数据集将是classes
Controller 类中的字段,两个 JTable 必须以不同的方式显示内容。也就是说,Table1 必须显示如下内容:
Classroom Name | Courses
4a | CS101, CS102, CS103
4b | BM101, CS102
4c | I101, CS4100
所以基本上,对于每个教室,课程列表。
表 2 应该显示如下内容:
Student Name | Good?
Mark Spencer | true
Philippe Mann | true
Tom Sayer | false
我应该看到所有教室的所有学生。
如您所见,数据相同,但显示方式不同。我想做的是,当我的数据发生变化时,表格也会自动更新。就我目前的理解而言,我必须继承 AbstractTableModel 并为我想要显示的数据类型创建两个不同的 TableModel;我没有得到的是:
- 一旦发生一些变化,模型将如何获取他们的数据?
- 谁应该将此更改通知模型?
- 调用“fireTableXXXEvent()”是否足以触发视图刷新?
我希望我说得足够清楚......无论如何,非常感谢你!再见