在JTable中添加JSpinner时获取非法参数异常

时间:2019-06-23 19:00:28

标签: java swing

所以我要使用AbstractCellEditor和TableCellEditor类在Jtable的单元格内添加一个JSpinner mt SpinnerEditor类非常简单,代码如下:

String

问题是当我尝试通过单击来编辑单元格时,我得到了非法参数Exception:

public class SpinnerEditor extends AbstractCellEditor implements TableCellEditor {

    final JSpinner spinner;
    SpinnerEditor(){
        spinner = new JSpinner();
    }

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

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

    @Override
    public boolean isCellEditable(EventObject evt){

    return true;
    }

}

我无法找出问题所在! 预先感谢

2 个答案:

答案 0 :(得分:0)

好吧,当我将值设置为spinner.setValue(value)时,我得到了自己的问题的答案 在方法中:

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

默认值将为null,因此出现异常,我将该方法修改为,并且工作正常:

public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
        if(value == null)
           spinner.setValue(0);
        else
           spinner.setValue(value);
        return spinner ;
    }

答案 1 :(得分:0)

您应该尝试:

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


public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
        if(value == null)
           spinner.setValue(0);
        else
           spinner.setValue(value);
        return spinner ;
    }