Страница 1 из 1
Добавлено: 21 апр 2004, 03:45
AiK
А не лучше ли листенер присобачить к контролу, который получает ввод с клавиатуры? Кнопке или edit'у...
Если я ничего не путаю, то твой код будет работать только в том случае, если contentPane имеет фокус...
Добавлено: 21 апр 2004, 12:15
AiK
По поводу кнопки: глянь JRootPane.setDefaultButton(JButton defaultButton) - работает точно.
С JTextField будем разбираться, что там не путём.
Добавлено: 21 апр 2004, 15:01
AiK
Oleg_S, если установить defpushbutton

, то именно эта кнопка отработает, если ты нажмёшь ввод. Т.е. типа кнопка будет слушать клавиатуру. Точнее ей будет передано управление по нажатию Enter. У меня есть рабочий код 4-хлетней давности, который использует сочетание keyListener'а и setDefaultButton. Без setDefaultButton он не работает как ожидается, но в этом надо подробнее разбираться, на что пока нет времени...
Добавлено: 23 июн 2004, 09:56
mm
А такой вопрос (почти в тему):
Допустим, хотим что то сделать, когда нажимается не просто 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. Как быть?
Добавлено: 23 июн 2004, 16:09
Bas
Из документации:
Комбинации клавиш, которые не "производят" какого-либо UNICODE символа (типа F1), НЕ ГЕНЕРЯТ KEY_TYPED событие
Пользуйся KEY_PRESSED и KEY_RELEASED...
Добавлено: 09 ноя 2004, 12:07
Георгий
Может и поздновато, но все же...
При нажатии Enter в JTextField генерируется Action. Т.е. можно использовать ActionListener.
Код: Выделить всё
private JTextField name = new JTextField(10);
...
...
Action nameAction = new AbstractAction()
{
public void actionPerformed(ActionEvent event)
{
doSomeThing();
}
};
...