我有一个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的格式化版本的方法。
答案 0 :(得分:2)
getCurrencyEquivalent()是一种以不同的String格式返回给定String的格式化版本的方法。
在编辑数据时,请勿使用FocusListener尝试更改数据的格式。
相反,您应该使用自定义渲染器来格式化数据。查看Table Format Renderers,了解如何执行此操作的简单示例。