Java 构造具有数学矩阵编辑支持的JFace TableViewer
我们的应用程序(基于EclipseRCP,使用基于JFace/SWT的接口)需要支持数学矩阵的编辑。矩阵始终为正方形,可以是2x2到11x11之间的任意大小。此外,界面上将放置按钮,以允许用户增加或缩小矩阵 我们在代码中使用JFace TableViewer和TreeViewer来编辑非矩阵数据。如果可能的话,我想使用相同的一般结构来编辑矩阵 我使用每个矩阵元素一行将数据持久化到MySQL数据库中,如下所示:Java 构造具有数学矩阵编辑支持的JFace TableViewer,java,eclipse,swt,rcp,jface,Java,Eclipse,Swt,Rcp,Jface,我们的应用程序(基于EclipseRCP,使用基于JFace/SWT的接口)需要支持数学矩阵的编辑。矩阵始终为正方形,可以是2x2到11x11之间的任意大小。此外,界面上将放置按钮,以允许用户增加或缩小矩阵 我们在代码中使用JFace TableViewer和TreeViewer来编辑非矩阵数据。如果可能的话,我想使用相同的一般结构来编辑矩阵 我使用每个矩阵元素一行将数据持久化到MySQL数据库中,如下所示: +----------------------+------------+------
+----------------------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+------------+------+-----+---------+-------+
| id | bigint(20) | NO | PRI | NULL | |
| rowNum | bigint(20) | NO | | NULL | |
| columnNum | bigint(20) | NO | | NULL | |
| value | double | NO | | NULL | |
| matrix_id | bigint(20) | NO | MUL | NULL | |
+----------------------+------------+------+-----+---------+-------+
我遇到的问题是JFace“input”似乎对应于呈现表中的单个表行。在我的例子中,一个数据库行对应于表中的一个单元格,而不是整行
我能想到的唯一一件事就是在幕后以某种方式存储一个对象,以保持矩阵的状态,并有效地将数据库行转换为一个适当的JFace-able模型。(例如,如果我有一个3x3矩阵,将九行传入代理对象,并使用三乘三数组调用viewer.setInput(object)
。但这似乎是一个需要支持的噩梦,因为我需要将此对象与内部模型和数据库保持同步
这里有没有人有这方面的经验,可以给我一些建议?一个多星期后没有答案,所以我就自己写了一个。我制作了一个类,有效地作为JFace表的输入,该表将矩阵的行和列转换成一个
列表,然后ContentProvider、LabelProvider和EditingSupport都可以使用它。我还可以添加“增大大小”和“减小大小”按钮,以允许用户根据需要增大或缩小矩阵