在焦点丢失时动态更改 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 了解如何执行此操作的简单示例。
我有一个 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 了解如何执行此操作的简单示例。