2011-01-23 4 views
1

나는 dataTable 및 cellEditor 양식을 하나의 열로 만듭니다. 이 열은 단순한 jSpinner입니다. 나는 다음과 같은 문제가있다. 회 전자에 값을 입력하고 다른 행을 선택하면 이전 행의 값이 변경되지 않습니다. 내가 누르면, 끝날거야. 선택 또는 버튼을 선택하면 완료됩니다. 그러나 가치를 입력하고 선택을 변경하면 완료되지 않습니다. 도와주세요. 다음은 CellEditor 코드입니다.JSpinner 업데이트

public class DurationTableCellEditor extends AbstractCellEditor implements TableCellEditor{ 

final JSpinner spinner = new JSpinner(); 

// Initializes the spinner. 
public DurationTableCellEditor() { 
    spinner.setModel(new SpinnerNumberModel(1,1,50000,1));   
} 

// Prepares the spinner component and returns it. 
public Component getTableCellEditorComponent(JTable table, Object value, 
     boolean isSelected, int row, int column) { 
    spinner.setValue(new Integer(value.toString()).intValue()); 
    spinner.setCursor(null); 
    return spinner; 
} 

// Enables the editor only for double-clicks. 
@Override 
public boolean isCellEditable(EventObject evt) { 
    if (evt instanceof MouseEvent) { 
     return ((MouseEvent)evt).getClickCount() >= 1; 
    } 
    return true; 
} 

// Returns the spinners current value. 
public Object getCellEditorValue() { 
    return spinner.getValue(); 
} 

}

답변

0

그것은 당신이 당신의 데이터 모델을 업데이트하는 방법 명확하지 않다,하지만 한 가지 방법이 exampleItemListener을 구현하는만큼, 당신의 CellEditorChangeListener을 구현하는 것입니다. 참고로 How to Use Tables: Using Other Editors을 참조하십시오. 특히, fireEditingStopped()을보십시오. 마지막으로 해당 TableCellRenderer이 필요합니다.

0

commitEdit()

// Returns the spinners current value. 
public Object getCellEditorValue() { 
    spinner.commitEdit(); 
    return spinner.getValue(); 
} 
관련 문제