【问题标题】:Why doesn't JTable show user input?为什么 JTable 不显示用户输入?
【发布时间】:2012-05-13 01:40:18
【问题描述】:

MyTableCellEditor 需要在 JTable 中添加覆盖编辑(如 Excel 单元格)和数据输入规则(parseDouble)。 当用户单击另一个单元格时,为什么单元格会擦除用户输入的值? IOW:输入到一个单元格中的值是可见的,直到单击另一个单元格,然后它就消失了。 单步执行程序,当用户编辑单元格值时调用getTableCellEditorComponent,当单元格编辑完成时调用getCellEditorValue。

public class MyTableFrame extends javax.swing.JFrame 
    implements TableModelListener {
    private static TableColumn column2;

    public MyTableFrame() {
        initComponents();
        ...
        column2 = jTable.getColumnModel().getColumn(2);
        column2.setCellEditor(new MyTableCellEditor());
        jTable.getModel().addTableModelListener(this);
    }
}

public class MyTableCellEditor extends AbstractCellEditor implements
        TableCellEditor {

    // Component to handle the editing of a cell value
    private JTextField component = new JTextField();
    // Return value
    private Object value;
    private DefaultTableModel model;
    private int rowIndex;
    private int columnIndex;

    public Component getTableCellEditorComponent(JTable table, Object value,
            boolean isSelected, int rowIndex, int columnIndex) {
        model = (DefaultTableModel) table.getModel();
        this.value = value;
        this.rowIndex = rowIndex;
        this.columnIndex = columnIndex;
        component.setText("");
        return component;
    }

    public Object getCellEditorValue() {
        try {
            return Double.parseDouble(model.getValueAt(rowIndex, columnIndex)
                .toString());
        } catch (Exception ex) {
            return value;
        }
    }
}

【问题讨论】:

    标签: java swing jtable tablecelleditor


    【解决方案1】:

    我猜是在编辑完成后将条目放入模型中。因此,从getCellEditorValue() 中的模型中获取值将为您提供编辑前的值。

    您应该使用component.getText() 来获取值。

     return Double.parseDouble(component.getText())
    

    【讨论】:

    • 正是如此。谢谢一百万。
    猜你喜欢
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多