java - 使用数学矩阵的 EditingSupport 构建 JFace TableViewer

标签 java eclipse swt rcp jface

我们的应用程序(基于 Eclipse RCP,使用基于 JFace/SWT 的界面)需要支持数学矩阵的编辑。矩阵始终是正方形的,可以是从 2x2 到 11x11 的任意大小。此外,按钮将放置在界面上以允许用户扩大或缩小矩阵。

我们在整个代码中使用 JFace TableViewers 和 TreeViewers 来编辑非矩阵数据。如果可能的话,我想使用相同的通用结构来编辑矩阵。

我使用每个矩阵元素一行将数据保存在 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“输入”似乎对应于呈现表中的单个表行。在我的例子中,单个数据库行对应于表中的一个单元格,而不是整行。

我唯一能想到的是以某种方式在幕后存储一个对象,以保持矩阵化状态并将数据库行有效地转换为适当的 JFace 模型。 (例如,如果我有一个 3x3 矩阵,将九行传入代理对象并让它调用 viewer.setInput(Object) 一个三乘三的数组。这似乎是一场噩梦支持,因为我需要使这个对象与内部模型和数据库保持同步。

这里有没有人有过这种事情的经验,可以给我一些建议吗?

最佳答案

一个多星期后仍然没有答案,所以我最终决定自己解决这个问题。我制作了一个有效地用作 JFace 表输入的类,该表将矩阵的行和列转换为 List<List<Double>>。 ;然后让 ContentProvider、LabelProvider 和 EditingSupport 与之配合使用。我还能够添加“增加大小”和“减小大小”按钮,以允许用户根据需要扩大或缩小矩阵。

关于java - 使用数学矩阵的 EditingSupport 构建 JFace TableViewer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5021436/

相关文章:

java - SPRING REST 中与父类的响应

java - 一对一多列外键的断列映射

java - 基于 SWT 的 GUI 在从全尺寸最小化状态最大化时变黑

java - 如何自动更新已包含信息的 Java SWT 表格单元格?

java - 除了使用 swt 绘图之外,还有更好的选择吗?

java - 如何在没有ajax的情况下将不同的jsp页面合并为一个

java - ListView 未返回精确的滚动位置

java - Eclipse JPA 添加新的父对象

java - 在 eclipse jdt/ast 中使用 ICompilationUnit 进行 ASTParser.setSource() 方法

java - java.lang.NoClassDefFoundError:org/hamcrest/SelfDescribing