我们目前在 java swing 中JTable有一个焦点问题。JTextEditor有JTable一个自定义单元格编辑器,它是一个JTextField.
问题是当正在编辑单元格并包含无效数据时,用户单击 aJButton时,文本字段将停止编辑并JButton调用 actionPerformed(单击)。JTable#setValueAt处理验证,因此如果 中的数据无效,则不会更新JTextField底层。TableModel
理想情况下,我们不想让JButton点击发生。焦点应保持在JTable或 上JTextField。
单击按钮将执行提交操作并关闭表格所在的框架。由于验证TableModel#setValueAt不会更新值,它会提交旧值。
这可以做到吗?我对 Swing 还很陌生,所以我不知道要检查什么。
不幸的是,我们的代码不是直截了当的。UI 是从 XML 构造的,使得按钮对表单上的任何其他内容一无所知(这是我继承的代码)。
在 .net 中,您可以通过处理 Validating 事件并设置取消标志来阻止控件失去焦点。Java是否有类似的机制。