Здравствуйте, T34, Вы писали:
T34>Все работает, а вот последняя функция — ни в какую, он в нее даже не заходит. Гугль ковырял, документацию ковырял — ничего не нашел.
Сырцы забыл поковырять.
T34>Подскажите, в чем могут быть проблемы?
А почему это должно быть проблемой?
JTable.propertyChange:
if (!getCellEditor().stopCellEditing()) {
getCellEditor().cancelCellEditing();
}
Метод stopCellEditing может провалидировать текущее значение и если оно не приминимо, то он возвращает false. В этом случае вызывается cancelCellEditing.
Вот такая простота:
class SimpleCellEditor extends DefaultCellEditor {
static JTextField textField = new JTextField();
SimpleCellEditor() {
super(textField);
textField.setBorder(BorderFactory.createLineBorder(Color.RED, 1));
}
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int rowIndex, int vColIndex) {
textField.setText(value.toString());
return textField;
}
public Object getCellEditorValue() {
return textField.getText();
}
public void cancelCellEditing() {
super.cancelCellEditing();
System.out.println("cancelled");
}
}
Все работает, а вот последняя функция — ни в какую, он в нее даже не заходит. Гугль ковырял, документацию ковырял — ничего не нашел.
Подскажите, в чем могут быть проблемы?
Здравствуйте, T34, Вы писали:
T34>Здравствуйте, Blazkowicz
T34>Ммм... тогда я немного перефразирую, то есть скажу что мне нужно.
T34>По нажатию кнопки на тулбаре в конец таблицы добавляется строка и активизируется редактор для первой ячейки. Если пользователь нажимает Esc, редактирование прекращается, и мне нужно, чтобы эта новая пустая строка была удалена. Я думал, что это связано с cancelCellEditing, но ни эта функция ни stopCellEditing не вызываются при нажатии Esc. Вот. Опыта работы с тысячестрочными сырцами Свинга недостаточно, чтобы быстро выявить решение вопроса.
Удалось выловить через вот так:
textField.addFocusListener(new FocusListener() {
public void focusLost(FocusEvent arg0) {
System.out.println("focusLost");
}
});
Но сдается мне это не совсем верный вариант...