【问题标题】:Validate tableviewer row and display error验证 tableviewer 行并显示错误
【发布时间】:2018-12-13 17:14:30
【问题描述】:

我有一个支持编辑的表格查看器,有两列。如果我的第一列中的文本与指定的正则表达式模式不匹配,则应在表示验证错误的行中指定一个错误标记。

我尝试使用CellEditor,但使用此错误标记只能显示在当前选定的行中。如果我在ICellEditorValidatorisValid() 方法中所做的验证失败,我希望所有行都用错误标记进行标记。

【问题讨论】:

  • 您为表格使用了哪种标签提供程序?
  • 我正在使用列标签提供程序

标签: java jface tableviewer


【解决方案1】:

您可以使用ColumnLabelProvidergetImage 方法返回合适的错误图像。

由于标签提供者只能轻松访问行的内容提供者元素,因此最简单的方法是让单元格编辑器在标签提供者可以测试的元素上设置错误标志。

单元格编辑器在更改标志值时应调用表格查看器update(element, null) 方法以让查看器更新行。

【讨论】:

  • 当值即将设置到单元格时验证整个单词,即在单元格中键入文本并且焦点移动到下一个单元格或一旦当前单元格失去焦点。但我需要一个动态的监听器,比如我们为一个简单的文本小部件使​​用的 modifyListener(),它会在每个输入的字母时触发。
  • 如果您使用的是单元格编辑器,您可以在单元格编辑器的文本控件上使用修改侦听器。
  • 但在这种情况下,如果我为 CellEditor 设置了一个错误符号,当我的焦点转移到下一个单元格时,该符号就会消失。每次我单击一个单元格时,它都会根据当前选择的内容显示错误消息,并且其他错误单元格中的其他错误标记消失。此外,最初当我输入文本时,由于在我将焦点移到下一个单元格之前该值未设置为表格,因此使用 LabelProvider 的 getImage() 方法仅在移动到下一个单元格时设置错误图标,而不是在移动到下一个单元格时动态设置打字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 2019-02-06
相关资源
最近更新 更多