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

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

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

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

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

你可以试试

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

谢谢asalamon74,这非常好用。

有关Sun Bug数据库的事情存在争议: 错误4724980:JTable:添加API以控制当表失去焦点时编辑时会发生什么。 (还找到了其他错误条目)。 terminateEditOnFocusLost打开“提交或取消”行为,可以在JTable $ CellEditorRemover类的Java源代码中看到

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

还有更多这些问题,请参阅Java Swing的问题:在editopopCellEditing()时更改JTree选择:如何在TreeListeners之前调用stopCellEditing():valueChanged?