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();
}
}发布于 2010-11-02 21:55:44
setCellEditor(TableCellEditor)只为当前活动的单元格设置编辑器(一旦它不再活动,编辑器就会丢失。您希望调用JTable.setDefaultEditor()来为特定类设置默认编辑器。
jTable.setDefaultEditor(String.class, tableCellEditor);或者,您可以通过TableColumnModel为列设置编辑器,例如
jTable.getColumnModel().getColumn(1).setCellEditor(tableCellEditor);https://stackoverflow.com/questions/4077969
复制相似问题