А не лучше ли листенер присобачить к контролу, который получает ввод с клавиатуры? Кнопке или edit’у.
Если я ничего не путаю, то твой код будет работать только в том случае, если contentPane имеет фокус.
Даже самый дурацкий замысел можно воплотить мастерски
По поводу кнопки: глянь JRootPane.setDefaultButton(JButton defaultButton) — работает точно.
С JTextField будем разбираться, что там не путём.
Даже самый дурацкий замысел можно воплотить мастерски
Oleg_S, если установить defpushbutton , то именно эта кнопка отработает, если ты нажмёшь ввод. Т.е. типа кнопка будет слушать клавиатуру. Точнее ей будет передано управление по нажатию Enter. У меня есть рабочий код 4-хлетней давности, который использует сочетание keyListener’а и setDefaultButton. Без setDefaultButton он не работает как ожидается, но в этом надо подробнее разбираться, на что пока нет времени.
Даже самый дурацкий замысел можно воплотить мастерски
А такой вопрос (почти в тему):
Ввод NCK на кнопочный Alcatel. Инструкция для СЦ с программаторами
Допустим, хотим что то сделать, когда нажимается не просто 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. Как быть?
Источник: www.developing.ru
Как enter в вконтакте
При запуске программы на Си автоматически открываются ряд потоков, основными из которых являются следующие:
- Стандартный поток ввода stdin
- Стандартный поток вывода stdout
- Стандартный поток вывода сообщений об ошибках stderr
Стандартный поток ввода stdin по умолчанию соответствует клавиатуре, а потоки stdout и stderr — экрану монитора.
Для управления вводом-выводом с помощью этих потоков используются ряд функций:
- getchar() : ввод с клавиатуры одного символа
- putchar() : вывод на консоль одного символа
- fgets() : ввод одной строки
- puts() / fputs() : вывод одной строки на консоль
- scanf() : ввод с консоли с форматированием данных
- sscanf() : ввод с из строки с форматированием данных
- printf() : вывод с форматированием данных
Функции printf и scanf уже рассматривались ранее, поэтому посмотрим, как применять остальные функции.
Ввод и вывод символов
Для ввода и вывода символа применяются функции getchar() и putchar() . Но следует сказать, что на самом деле они полноценными функциями не являются, а определены как макросы в заголовочном файле stdio.h :
#define getchar() getc(stdin) #define putchar(c) putc((c), stdout)
Вывод символа
Для вывода отдельного символа на консоль предназначена функция putchar() со следующим прототипом:
Взлом в вк только в конце не успел написать нажимаем Enter
int putchar(int c);
Выводимый символ в виде числового кода передается в putchar в качестве параметра, он же возвращается функцией.
#include int main(void) < char c = ‘A’; putchar(c); // Выводим символ A >
Ввод символа
Для ввода одного символа с клавиатуры применяется функция getchar() , которая имеет следующий прототип:
int getchar(void);
В качестве результата функция возвращает числовой код введенного символа.
При использовании функции getchar следует учитывать, что при печати текста посредством клавиатуры в буфер операционной системы заносятся коды печатаемых символов, а сами символы отображаются на экране. Поучение программой введенного символа из буфера производится с помощью нажатия клавиши Enter.
И если буфер операционной системы не пуст, то при вызове функции getc() она получает очередной символ из буфера. Если же буфер пуст, то происходит чтение байта из потока ввода с помощью системной функции, название которой зависит от операционной системы.
При этом при нажатии клавиши Enter, в буфер также помещается код этой клавиши. То есть если мы введем один символ и нажмем на Enter, в буфере окажутся два числовых кода — введенного символа и клавиши Enter. И это надо учитывать при работе с функцией getchar. В частости, рассмотрим простой, но показательный пример:
#include int main(void) < printf(«1»); getchar(); // ожидание ввода символа printf(«2»); getchar(); // ожидание ввода символа printf(«3»); return 0; >
Сначала на экран выводится цифра 1, после чего функция getchar ожидает ввода символа. Если после ввода символа мы нажмем Enter, то в буфер будет помещены два числовых кода — введеного символа и клавиши Enter. Поэтому при втором вызове getchar эта функция считывает байт из буфера — то есть числовой код клавиши Enter.
Например, введем при первом вызове функции getchar символ «a», а затем Enter:
1a 23
Но если при каждом вызове getchar мы будем только нажимать клавишу Enter, тогда в буфер будет заноситься только код этой клавиши, и соответственно программа будет работать, как и ожидалось:
1 2 3
Применим функции getchar и putchar для ввода и вывода символов с клавиатуры:
#include int main(void) < int c; while((c=getchar())!=EOF) < putchar(c); >return 0; >
Функция getchar() считывает числовой код символа, который потом выводится в функции putchar() . Для вывода из программы необходимо ввести комбинацию клавиш Ctrl+C.
Ввод и вывод строк
Вывод строк и puts
Для вывода одной строки на консоль предназначена функция puts() со следующим прототипом:
int putchar(char *s);
В качестве параметра передается указатель на строку, а возвращаемым результатом функции является последний выведенный символ.
При этом функция puts() будет выводить символы переданной строки, пока не дойдет до нулевого символа ‘