我有一个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上触发了focuslost。这使得table.getEditingRow()始终返回-1,因此,几乎不可能在focuslost上动态设置值。如果可以的话,请通过其他任何方法帮助我解决此问题。

P.S:getCurrencyEquivalent()是一种以不同的String格式返回给定String的格式化版本的方法。

最佳答案

getCurrencyEquivalent()是一种以不同的String格式返回给定String的格式化版本的方法。


编辑数据时,请勿使用FocusListener尝试更改数据格式。

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

07-24 13:51