【问题标题】:How can I get table cell value as "xyz" WITHOUT hit the Enter or Tab key?如何在不按 Enter 或 Tab 键的情况下将表格单元格值设为“xyz”?
【发布时间】:2012-01-05 07:10:35
【问题描述】:

我发现您是否在不按 Enter 或 Tab 键的情况下编辑 TableViewer 单元格。那么新的单元格值将不会生效。例如,表格单元格值为“abc”,您将其更改为“xyz”。然后,当您读取该表格单元格值时,它仍然是“abc”。您必须按 Enter 或 Tab 键,然后您将获得该表格单元格的值为“xyz”。

如何在不按 Enter 或 Tab 键的情况下将该表格单元格值强制为“xyz”?

提前非常感谢!

【问题讨论】:

    标签: java key tableviewer


    【解决方案1】:

    我建议你检查 tableviewer api。 如果它是一个标准的 JTable,你只需使用这个:

    JTable table = new JTable(...);
    table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
    

    【讨论】:

    • 失去焦点意味着点击标签或点击其他地方......如果这仍然不可接受(我想知道为什么)那么你需要在编辑器上设置一个超时,以便在一段时间后不输入已考虑编辑...
    • 感谢您的回答,但是 TableViewer 有什么解决方案吗?
    • @Julien Bidault:你能告诉我如何为tableviewer的celleditor设置超时吗?
    • 我已经很久没有做过 Swing 了,但根据我的记忆:你把注意力集中在单元格之外,或者你按下 enter trigger en event 的事实。您在单元格中的类型也会触发一个事件。您可以做的是为“打字”事件注册一个侦听器,该事件将启动一个计时器。如果按下了新键,则计时器将重置为其原始值。一旦时间达到 0,您手动触发一个验证单元格内容的事件(有很多事件,选择正确的一个)。诀窍将是定时器的管理(只有一个定时器,并处理其他类型的事件)
    • 不是答案 a) TableViewer != JTable b) 对 JTable 没有任何帮助,因为不支持实时(按密钥类型)提交
    【解决方案2】:

    暂时,我通过将焦点从当前视图设置到 RCP 中的另一个视图来失去焦点:)。这不是官方解决方案,而是效果。

    【讨论】:

      猜你喜欢
      • 2013-11-23
      • 1970-01-01
      • 2014-03-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 2020-03-23
      • 1970-01-01
      相关资源
      最近更新 更多