VK_ENTER Как быть ???

Модератор: Absurd

Ответить
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

21 апр 2004, 03:45

А не лучше ли листенер присобачить к контролу, который получает ввод с клавиатуры? Кнопке или edit'у...
Если я ничего не путаю, то твой код будет работать только в том случае, если contentPane имеет фокус...
Даже самый дурацкий замысел можно воплотить мастерски
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

21 апр 2004, 12:15

По поводу кнопки: глянь JRootPane.setDefaultButton(JButton defaultButton) - работает точно.
С JTextField будем разбираться, что там не путём.
Даже самый дурацкий замысел можно воплотить мастерски
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

21 апр 2004, 15:01

Oleg_S, если установить defpushbutton :) , то именно эта кнопка отработает, если ты нажмёшь ввод. Т.е. типа кнопка будет слушать клавиатуру. Точнее ей будет передано управление по нажатию Enter. У меня есть рабочий код 4-хлетней давности, который использует сочетание keyListener'а и setDefaultButton. Без setDefaultButton он не работает как ожидается, но в этом надо подробнее разбираться, на что пока нет времени...
Даже самый дурацкий замысел можно воплотить мастерски
mm
Сообщения: 34
Зарегистрирован: 19 фев 2004, 10:36
Контактная информация:

23 июн 2004, 09:56

А такой вопрос (почти в тему):

Допустим, хотим что то сделать, когда нажимается не просто Enter, а Ctrl+Enter, делаем следующее:

Код: Выделить всё

messageField.addKeyListener(new KeyAdapter() {
				public void keyTyped(KeyEvent ke){					
					if (ke.isControlDown()) {
						if (ke.getKeyCode() == KeyEvent.VK_ENTER) {
							//System.out.println("Ctrl+Enter");
						}
					}					
				}
			});
Так вот, при нажатом Ctrl getKeyCode() возвращает 0, а не код клавишы Enter, поэтому условие в if не выполняется при нажатии Enter. Как быть?
Bas
Сообщения: 21
Зарегистрирован: 10 мар 2004, 21:46

23 июн 2004, 16:09

Из документации:
Комбинации клавиш, которые не "производят" какого-либо UNICODE символа (типа F1), НЕ ГЕНЕРЯТ KEY_TYPED событие
Пользуйся KEY_PRESSED и KEY_RELEASED...
Георгий
Сообщения: 3
Зарегистрирован: 09 ноя 2004, 11:55
Контактная информация:

09 ноя 2004, 12:07

Может и поздновато, но все же...
При нажатии Enter в JTextField генерируется Action. Т.е. можно использовать ActionListener.

Код: Выделить всё

  private JTextField name = new JTextField(10);
  ...

  ...
  Action nameAction = new AbstractAction()
  {
    public void actionPerformed(ActionEvent event)
    {
      doSomeThing();
    }
  };
  ...

Ответить