Обновление JSpinner - PullRequest
       16

Обновление JSpinner

1 голос
/ 23 января 2011

Я создаю dataTable, а cellEditor формирует один столбец. Этот столбец простой jSpinner. У меня следующая проблема. Когда я ввожу какое-то значение в счетчик и выбираю другую строку, значение в предыдущей строке не изменится. Если я нажму, это будет сделано. Если я выберу или кнопку, это будет сделано тоже. Но если я введу значение и изменю выбор, это не будет сделано. Помогите, пожалуйста. Вот код CellEditor.

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();
}

}

Ответы [ 2 ]

0 голосов
/ 01 октября 2014

до commitEdit()

// Returns the spinners current value.
public Object getCellEditorValue() {
    spinner.commitEdit();
    return spinner.getValue();
}
0 голосов
/ 23 января 2011

Непонятно, как вы обновляете модель данных, но один из подходов заключается в реализации ChangeListener в вашем CellEditor, так же, как этот пример реализует ItemListener. Для справки см. Как использовать таблицы: Использование других редакторов . В частности, посмотрите на fireEditingStopped(). Наконец, вам понадобится соответствующий TableCellRenderer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...