Swing Spinner Column

时间:2015-10-21 19:59:28

标签: java swing jtable jspinner

我有一个类用于在JSpinner中创建基于JTable框的列。但是,我有一个问题,当我在新行中编辑值时,微调框的旧值将显示在新单元格中。例如,如果我在第1行中将值设置为3,然后移到第2行,则微调器的最小值从3开始,而不是0.有人可以提出修改此行为的方法吗?

我在想可能是每行需要一个单独的微调框,我必须将行号的地图维护到微调框,但是,我觉得应该有更好的解决方案。

public class SpinnerColumn extends AbstractCellEditor implements TableCellEditor, TableCellRenderer {
    private final JSpinner spinner = new JSpinner();
    private JTable table;

    public SpinnerColumn(JTable table, int column)
    {
        this.table = table;
        table.getColumnModel().getColumn(column).setCellEditor(this);
    }

    @Override
    public Object getCellEditorValue()
    {
        return this.spinner.getValue();
    }

    @Override
    public Component getTableCellEditorComponent(JTable table, Object value,
        boolean isSelected, int row, int column)
    {
        if (isSelected)
        {
            spinner.setValue(value);
        }
        return spinner;
    }

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
        boolean isSelected, boolean hasFocus, int row, int column)
    {
        return spinner;
    }
}

0 个答案:

没有答案