gpt4 book ai didi

java - JTable 关键监听器

转载 作者:行者123 更新时间:2023-12-01 18:17:54 25 4
gpt4 key购买 nike

如果验证确定数据正常,我需要 JTable 来验证给定行的数据并将 column1 的组件更改为 JButton,标记为“保存”(准备好记录保存)。我需要对每次击键使用react。

无论我尝试了多少方法,在评估数据之前,用户似乎都被迫关闭单元格编辑器(通过单击其他位置或按 Enter 键)。

您是否知道有一种方法可以让按键监听器(或其他方法)提供即时反馈,而不是强制进行额外的键/鼠标敲击?

使用 DefaultCellEditor 进行数据评估仍然需要额外的击键,而 KeyBindings(显然不需要)似乎只需要对特定的键使用react。

有没有办法提供一个监听器,可以对编辑器中的每次击键立即使用react?

跟进 m0skit0 的问题

问:我尝试过什么?

A:我有一个名为 ButtonColumn 的类,改编自 Rob Camick它实现了 TableCellRenderer。

这会验证行数据,如果验证成功,它会将单元格呈现为标记为“Save”的 JButton,否则它会返回带有纯文本标签“New...”(红色字体)的 theDefaultRendererComponent。

我有另一个实现 KeyListener 的类,每次用户击键时都会重新绘制表格,从而执行 SaveButtonRowFormatter 验证和渲染(如上所述)。

这仅在单元格编辑器关闭后才有效。这就是问题所在:用户必须关闭编辑器才能呈现表格并显示保存按钮。这并不直观,因为没有明显的原因表明用户在确定已成功填写记录后会进行任何击键。此时如果没有任何保存按钮,它们就会被卡住

最佳答案

Is there a way to provide a listener that will react instantly to each keystroke in the editor?

向编辑器的编辑器组件添加一个DocumentListener。

DefaultCellEditor dce = (DefaultCellEditor)table.getDefaultEditor(Object.class);
JTextField textField = (JTextField)dce.getComponent();
textField.getDocument().addDocumentListener(...);

阅读 Swing 教程中关于 How to Write a Document Listener 的部分了解更多信息。

关于java - JTable 关键监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28518733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com