powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / фокус ввода в JTable
2 сообщений из 2, страница 1 из 1
фокус ввода в JTable
    #33992262
kadet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
коллеги, помогите плз. решить такую задачку.
1. Надо в определенной ячейки таблицы (JTable) запретить передвижения фокуса ввода после нажатия клавиши "enter" (ну или вернуть фокус ввода снова в ту же ячейку),
2. переопределить стандартное перемещение фокуса ввода при помощи "табс" (например чтоб нажатие на табс перемещало фокус ввода не на позицию влево к следующей ячейки, а через ячейку влево).

Для решения задачи я расширил класс FocusTraversalPolicy и просто вписал в каждый его метод по System.out.prinln("имя метода"), для того чтоб как-то понять его поведение. Однако к моему сожалению ни один из методов этого класса не был вызван, хотя конструктор отработался.
Вот примерный план:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 public   class  InputDataTableFocusTraversalPolicy  extends 
		FocusTraversalPolicy{
 public  InputDataTableFocusTraversalPolicy(){
	out.println("ok");
}
	@Override
	 public  Component getFirstComponent(Container aContainer) {
		out.println("Table FocusPolicy: getFirstComponent()");
		 return   null ;
	}
//и таким образом все методы этого класса
}
в другом классе создал такую конструкцию:
Код: plaintext
1.
2.
JTable mytable= new  JTable( 2 , 5 );
myTable.setFocusTraversalPolicy( new  InputDataTableFocusTraversalPolicy());
и никакого толка. Фокус ввода все-равно убегает в сторону и на класс InputDataTableFocusTraversalPolicy абсолютно не реагирует.
Мне принципиально надо задержать фокус ввода на отдельно выбраной ячейке, чтоб только туда была введена информация и после "enter" - обработанна.

буду очень благодарен за помощь.
...
Рейтинг: 0 / 0
фокус ввода в JTable
    #33993838
kadet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
отвечаю сам себе.

поведение таблицы описанно в ее ActionMap:

Код: plaintext
1.
2.
myTable.getInputMap(
					JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
					KeyStroke.getKeyStroke(KeyEvent.VK_TAB,  0 , false), "none");
вместо "none" можно поставить другое название операции. тогда ее надо связыать например так:
Код: plaintext
1.
myTable.getActionMap().put("stayOnCurrentCell",
					 new  Action({...}));
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / фокус ввода в JTable
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]