我有一个类用于在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;
}
}