开发者

JSpinner Update

I creates a dataTable and cellEditor form one column. This column is simple jSpinner. I have the following problem. When I enter some value in the spinner and select the another row, the value in the previous row won't be changed. If I press , it'll done. If I select or button, it will done too. But if I enter value and change selection, it won't be done. Help, please. Here is the CellEditor code.

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 spinn开发者_JAVA技巧er.getValue();
}

}


It's not clear how you're updating your data model, but one approach would be to implement ChangeListener in your CellEditor, much as this example implements ItemListener. For reference, see How to Use Tables: Using Other Editors. In particular, look at fireEditingStopped(). Finally, you'll need a corresponding TableCellRenderer.


do commitEdit()

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜