【问题标题】:Constructing a JFace TableViewer with EditingSupport for a mathematical matrix为数学矩阵构造一个带有 EditingSupport 的 JFace TableViewer
【发布时间】:2011-02-16 19:56:04
【问题描述】:

我们的应用程序(基于 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) 并使用 3×3 数组。不过,这似乎是一场噩梦,因为我需要使该对象与内部模型和数据库保持同步。

这里有没有人有这方面的经验,可以给我一些建议吗?

【问题讨论】:

    标签: java eclipse swt rcp jface


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-13
      • 1970-01-01
      • 1970-01-01
      • 2016-03-19
      • 1970-01-01
      相关资源
      最近更新 更多