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