我这里有一个我在stackoverflow中找到的代码,它允许表格自定义单元格编辑器为JTextField
。
我一直在阅读一些关于单元格编辑器的文章,我理解了每种抽象方法的一些行为。
class tableText extends AbstractCellEditor implements TableCellEditor {
JComponent component = new JTextField();
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected,int rowIndex, int vColIndex) {
((JTextField) component).setText((String) value);
return component;
}
public Object getCellEditorValue() {
return ((JTextField) component).getText();
}
}
这个代码允许我在我想要编辑表格中的单元格时添加JTextField
,但我希望为它添加一些代码,但我不确定在哪里放置它们。
我想添加的行为是:
单击单元格并显示JTextField
时,如果用户按下数字键,它将用新值替换旧值。
如果单元格的值保留为空白,则将保留原始值。
我知道如何制作这些代码,但我不确定将它们放在哪里。
任何人都可以指导我吗?
答案 0 :(得分:1)
如果用户按下数字键,它将用新值替换旧值。
如图here所示,您应该使用DefaultCellEditor
和JTextField
作为单元格编辑器。覆盖表的editCellAt()
方法并选择编辑器的文本,以便在用户输入时立即替换旧值。
final Component editor = getEditorComponent();
…
((JTextComponent) editor).selectAll();
如有必要,请添加DocumentListener
以检查单个击键,或添加DocumentFilter
以强制执行数字输入。
如果单元格的值保留为空白,则将保留原始值。
按 Escape 键取消编辑并恢复原始值。