我有一个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,以获取有关如何执行此操作的简单示例。