TableCellEditor:如果按下键,则清除原始文本;如果没有输入则保留值
TableCellEditor: clear original text if key is pressed; retain value if no input was givien
我这里有一段我在 Whosebug 中找到的代码,它允许 table 有一个自定义单元格编辑器,如 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();
}
}
当我想编辑 table 中的单元格时,此代码允许我添加 JTextField
,但我想向其中添加一些代码,但我不确定将它们放在哪里.
我想添加的行为是这样的:
当单击单元格并出现 JTextField
时,如果用户按下数字键,它将用新值替换旧值。
如果单元格的值留空,将保留原始值。
我知道如何制作这些代码,但我不确定将它们放在哪里。
有人可以指导我吗?
If the user pressed a numeric key, it will replace the old value with a new one.
如 here 所示,您应该为单元格编辑器使用 DefaultCellEditor
和 JTextField
。覆盖 table 的 editCellAt()
方法和 select 编辑器的文本,以便在用户键入时立即替换旧值。
final Component editor = getEditorComponent();
…
((JTextComponent) editor).selectAll();
如有必要,添加 DocumentListener
to examine individual keystrokes or a DocumentFilter
以强制输入数字。
If the cell's value was left blank, the original value will be retained.
按Escape键取消编辑并恢复原值。
我这里有一段我在 Whosebug 中找到的代码,它允许 table 有一个自定义单元格编辑器,如 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();
}
}
当我想编辑 table 中的单元格时,此代码允许我添加 JTextField
,但我想向其中添加一些代码,但我不确定将它们放在哪里.
我想添加的行为是这样的:
当单击单元格并出现 JTextField
时,如果用户按下数字键,它将用新值替换旧值。
如果单元格的值留空,将保留原始值。
我知道如何制作这些代码,但我不确定将它们放在哪里。
有人可以指导我吗?
If the user pressed a numeric key, it will replace the old value with a new one.
如 here 所示,您应该为单元格编辑器使用
DefaultCellEditor
和JTextField
。覆盖 table 的editCellAt()
方法和 select 编辑器的文本,以便在用户键入时立即替换旧值。final Component editor = getEditorComponent(); … ((JTextComponent) editor).selectAll();
如有必要,添加
DocumentListener
to examine individual keystrokes or aDocumentFilter
以强制输入数字。If the cell's value was left blank, the original value will be retained.
按Escape键取消编辑并恢复原值。