Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Фокус и JTable


Автор: Stvan 19.2.2004, 07:58
Если при редактировании таблица теряет фокус, то ячейка так и повисает в редактировании
и значение не сохраняется.
Ну думаю ладно думаю, повесил листенер на потерю фокуса:

public void focusLost(FocusEvent e) {
super.focusLost(e);
if (tab.getDefaultEditor(Class.class) != null) {
tab.getDefaultEditor(Class.class).stopCellEditing();
}
}


Появилась другая проблема. Теперь при нажатии на ячейку редактирование начинается с третьего клика. Как это победить.
И еще такой вопрос, как сделать, чтобы по интеру фокус в таблице перемещался слева направо, а не сверху вниз.

Автор: AntonSaburov 19.2.2004, 14:26
Мда-а-а-а. Я тут повозился почти час - никаких идей. Если что найду - напишу. Если найдешь сам - дай знать. Очень интересно стало - как такое сделать ?

Автор: Stvan 20.2.2004, 05:35
Короче я весь уже запутался в этих фокусах.
Чего удалось добиться:
Получился некоторый комромиссный вариант, если начать редактирование, просто кликнув мышкой на ячейку, чтобы она выделилась, то при потере фокуса она сохраняется. Также заработало редактирование по двойному клику, но если писать так, то при потере фокуса все опять висит. Не пойму почему, вроде как два разных редактора используются. Причем если делать первым способом,то по нажатию Enter фокус переходит в соседнюю ячейку, а если вторым - то нет.

public void focusLost(FocusEvent e) {
super.focusLost(e);
Component c = e.getOppositeComponent();
if (c != null)
if (c.getParent() != null) {
if (!c.getParent().equals(tab)) {
if (tab.isEditing()) {
tab.getCellEditor().stopCellEditing();
}
}
}
}

Перемещением курсора еще не занимался.

Автор: Stvan 20.2.2004, 10:49
Перемещение слева направо можно сделать всего одной строчкой, я просто офигел.

table.getInputMap().put(KeyStroke.getKeyStroke("ENTER"), "selectNextColumnCell");

Blazkowicz помог

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)