所以我要使用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;
}
}
我无法找出问题所在! 预先感谢
答案 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 ;
}