MyTableCellEditor 的目的是使 JTable 单元格的行为类似于 Excel 单元格 IOW,在单元格中单击后输入值会覆盖而不是附加到现有值。我没想到下面的代码在第一遍就可以工作,但我确实希望在 getTableCellEditorComponent 和 getCellEditorValue 中遇到调试断点。为什么我使用 jTable 时没有调用 getTableCellEditorComponent 或 getCellEditorValue?
public class MyTable extends javax.swing.JFrame implements TableModelListener {
private static final MyTableCellEditor tableCellEditor =
new MyTableCellEditor();
...
public MyTable() {
initComponents();
jTable.getModel().addTableModelListener(MyTable.this);
...
private void initComponents() { // Generated by the Form Editor.
jTable = new javax.swing.JTable();
jTable.setCellEditor(tableCellEditor);
...
public class MyTableCellEditor extends AbstractCellEditor implements
TableCellEditor {
JComponent component = new JTextField();
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int rowIndex, int vColIndex) {
if (isSelected) {
((JTextField)component).selectAll();
}
((JTextField)component).setText((String)value);
return component;
}
public Object getCellEditorValue() {
return ((JTextField)component).getText();
}
}