如何在按下单独的JBtton时停止使用DefaultCellEditor进行编辑

时间:2008-12-18 14:01:26

标签: java swing focus jtable tablecelleditor

我得到了一个带有自定义TableCellEditor(扩展DefaultCellEditor)的表,其中有一个JFormattedTextField作为编辑器组件。

现在我遇到了问题:当我在编辑时按下一个单独的按钮。当按下按钮时,编辑器保持“打开并激活”,同时我希望它停止编辑,以便所做的更改可用于按钮引起的操作。

因此,当按下一个不同的按钮时,如何使编辑停止。我为 JFormattedTextField 尝试了 setFocusLostBehavior(JFormattedTextField.COMMIT),但它似乎没有效果。

希望有人有一些好主意=)

3 个答案:

答案 0 :(得分:12)

您可以尝试

jtable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);

答案 1 :(得分:3)

感谢asalamon74,效果非常好。

有关Sun Bug数据库的事情存在争议:Bug 4724980: JTable: Add API to control what happens to edits when table loses focus.(还发现了其他错误条目)。 terminateEditOnFocusLost打开“提交或取消”行为,可以在类 JTable $ CellEditorRemover

上的Java源代码中看到

是的,它有点奇怪,它没有记录在API等...

答案 2 :(得分:0)