在焦点丢失时动态更改 JTable 单元格值

Dynamically change JTable cell value at focus lost

我有一个 JTable,它的单元格编辑器是一个 JTextField,我在 celleditor 上调用 focuslost 代码是

public void focusLost(FocusEvent e)
{
 JTextField textField = new JTextField();
 textField = (JTextField) e.getSource();
 textField.setText(getCurrencyEquivalent(textField.getText()));//read P.S
 table.setValueAt(textField.getText(), table.getEditingRow(), 0);
}

我遇到以下异常:

java.lang.ArrayIndexOutOfBoundsException: -1

当我调试时,很明显焦点丢失是在焦点实际上从 JTable 的单元格中丢失之后在 cellEditor 上触发的。这使得 table.getEditingRow() 总是 return -1,因此动态设置 focuslost 的值是极不可能的。如果可用,请通过任何其他技术帮助我解决此问题。

P.S:getCurrencyEquivalent() 是一种方法,它 return 以不同的字符串格式生成给定字符串的格式化版本。

getCurrencyEquivalent() is a method that returns a formatted version of a given String in a different String format.

不要在编辑数据时使用 FocusListener 尝试更改数据格式。

相反,您应该使用自定义渲染器来格式化数据。查看 Table Format Renderers 了解如何执行此操作的简单示例。