Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/12: Рейтинг темы: голосов - 12, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 05.01.2008
Сообщений: 33

Java и клавиатура

12.05.2008, 08:10. Показов 2308. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, пожалуйста, новичку как отследить и обработать события клавиатуры в DOS-окне. Необходимо чтобы программа завершалась по нажатию определенной клавиши (или комбинации). Заранее спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.05.2008, 08:10
Ответы с готовыми решениями:

Какую версию Java поддерживает .Net Java# И какую VS6.0 Java++ ?
Какую версию Java поддерживает .Net Java# И какую VS6.0 Java++ ? Ответье, плиз, новичку, по MSDN я не понятно, это исключительно...

Посоветуйте примеры кода по Java. Теория прочтена, но с языком Java не знакома
Или может кто может дать готовый код. В теории вроде бы не очень сложно. :cry: 1.Напишите процедуру, которая по заданному сообщению...

При работе JVM обвалвается java c кодом Java Result 1073807364.
При работе JVM обвалвается java c кодом Java Result 1073807364. Если кто-нибудь знает, помогите пожалуйста.

18
mishgun
12.05.2008, 08:33
Жми Ctrl-C и тогда твоя прога сама перестанет работать
или обратись к константам объекта KeyEvent
0 / 0 / 0
Регистрация: 05.01.2008
Сообщений: 33
12.05.2008, 09:29  [ТС]
А как приостановить программу, а потом запустить дальше по нажатию какой-нибудь клавиши?
0
Orlik
12.05.2008, 14:56
ну можешь написать native метод ,
Sergey_
12.05.2008, 15:45
Какой native-метод?! Нажимаешь на Pause -- программа приостановилась. Нажимаешь any key -- пошла дальше.
0 / 0 / 0
Регистрация: 05.01.2008
Сообщений: 33
12.05.2008, 19:58  [ТС]
Мне серьезно надо приостановить прогу после определенной строчки кода!
0
mishgun
12.05.2008, 21:26
про Thread не слышал ничего? Используя их ты можешь приостановить исполнение программы на определенное время а потом она сама запустится или пиши KeyListener чтобы прога запускалась по нажатию на клаву
0 / 0 / 0
Регистрация: 05.01.2008
Сообщений: 33
13.05.2008, 00:02  [ТС]
Уважаемый mishgun!
Нельзя ли по подробнее о Threads & KeyListener? Я новичок в Java.
0
mishgun
13.05.2008, 02:44
KeyListеner-интерфейс который слушает события происходящие с клавиатурой. ДЛя работы с ним необходимо использовать объект KeyEvent
который имеет кучу костант отвечающих за нажатие определенной клавиши.Например VK_CONTROL - клавиши Ctrl , VK_C - литера С и т.д.

Thread - объект отвечающие за поточное программирование
используя метод этого объекта - sleep(long millisec) - можно заставить ваш тред(нить) 'спать' определенное количество времени,
yield()- пауза в работе этого треда(нить) или wait() и вызывать потом тред с помощью notify().
0 / 0 / 0
Регистрация: 05.01.2008
Сообщений: 33
13.05.2008, 15:01  [ТС]
Еще раз простите за необразованность!!!
Нельзя ли получить простейший код с KeyListener'ом. Что-нибудь типа бесконечный цикл и выход по нажатию клавиши отличной от Enter.
Заранее спасибо.
0
1 / 1 / 0
Регистрация: 13.05.2008
Сообщений: 23
13.05.2008, 19:44
И всё-таки, вы отслеживаете нажатия на клавиши в DOS-окне? Если да, то что это за окно, вашего веб-сервера? Если да, то там вы никаких нажатий кроме Ctrl-C или Pause не отследите, а для подключения механизма с KeyListener у вашего кода должен быть GUI (так сказать интерфейс). Если у вас есть GUI, то у компонента, который активен у вас во время исполнения вашего кода, зарегистрируйте ваш KeyListener (в javadoc по этому поводу написано: The listener object created from that class is then registered with a component using the component's addKeyListener method). И уж затем, взяв свой thread, после нужной строчки кода пишите бесконечный цикл с проверкой KeyListener'а:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 class YourKeyListener implements java.awt.event.KeyListener
 {
  public boolean isKeyPressed = false;
  public YourKeyListener(){}
 
  /**
   * in this methods you must check condition that you need and then 
   * sets the isKeyPressed variable to true
  */
  public keyTyped(KeyEvent e){...}
  public keyPressed(KeyEvent e){...}
  public keyReleased(KeyEvent e){...}
 }
 
 java.awt.yourComponent = ...;
 YourKeyListener yourKeyListener = new YourKeyListener();
 yourComponent.addKeyListener(yourKeyListener);
 
 Thread yourThread = ...;
 
 while(!yourKeyListener.isKeyPressed)
 {
  yourThread.sleep(1000);//wait for a second
 }
1
0 / 0 / 0
Регистрация: 05.01.2008
Сообщений: 33
14.05.2008, 03:32  [ТС]
У меня нет веб-сервера. Просто прога запускается в дос окне и все. интерфейса тоже нет, просто набор из присвоений и циклов. как тут отследить что нажато?
0
1 / 1 / 0
Регистрация: 13.05.2008
Сообщений: 23
14.05.2008, 11:20
Здесь пожалуй никак. В обычном консольном приложении вы только можете предложить что-нибудь ввести через
Code
1
System.in.read(...);
(с обязательным нажатием ввода в конце), но это похоже не совсем то, что вам нужно.
0
mishgun
14.05.2008, 21:26
Главная проблема что KeyListener регистрируется только с объектами наследующими от Component (то есть грубо говоря с GUI - Frame,Jframe и остальным) то есть к консолю првязать вряд ли получится(а точнее сказать не получится.Прийдется писать собственный KeyListener).
Прстейший код Треда пожалуйста он замирает на пятьсекунд а потом опять работает

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.lang.Thread;
import java.awt.event.*;
 
public class MyThread extends Thread {
    
    public static void main (String args[]){
       MyThread m = new MyThread();
    }
    
    public MyThread(){
        testKey();
        
    }
    
    public void testMyThread(){
    try{    
      this.run();
        for(int i=0;i<100;i++){
            System.out.println('Loop ' +i);
            if(i==50){
             System.out.println('Thread stopped');  
             this.sleep(5000);
             
            }
        }
    }
    catch(Exception e){}
    }
}
mishgun
14.05.2008, 21:29
Извиняюсь вот этот код правильный-
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.lang.Thread;
 
public class MyThread extends Thread {
    
    public static void main (String args[]){
       MyThread m = new MyThread();
    }
    
    public MyThread(){
        testMyThread(){     
    }
    
    public void testMyThread(){
    try{    
      this.run();
        for(int i=0;i<100;i++){
            System.out.println('Loop ' +i);
            if(i==50){
             System.out.println('Thread stopped');  
             this.sleep(5000);
             
            }
        }
    }
    catch(Exception e){}
    }
}
0 / 0 / 0
Регистрация: 05.01.2008
Сообщений: 33
15.05.2008, 04:21  [ТС]
Всем большое спасибо за помощь!
Я у себя написал следующее (если кому-то интересно):
Java
1
2
3
4
5
6
7
8
9
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String user_input = reader.readLine();
if(!(user_input.equals('')))
{
System.exit(0);
} 
else
{
}
0
1 / 1 / 0
Регистрация: 13.05.2008
Сообщений: 23
19.05.2008, 11:47
mishgun, меня заинтересовало как ты собираешься привязаться к событиям, которые происходят в консоли приложения - скажем событие нажатия одной клавиши(не ВВОД) на консоли?
0
mishgun
19.05.2008, 20:54
ПРочитай внимательно то что я написал-невозможно привязать KeyListener к событиям консоли.Или что то ещё непонятно?
1 / 1 / 0
Регистрация: 13.05.2008
Сообщений: 23
19.05.2008, 21:08
Ты написал:
...то есть к консолю првязать вряд ли получится(а точнее сказать не получится.Прийдется писать собственный KeyListener)...

Сорри за неопределённость в вопросе, я хотел спросить про последнюю фразу, а именно как написать собственный KeyListener для данной ситуации?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.05.2008, 21:08
Помогаю со студенческими работами здесь

Актуально ли изучать java сейчас по книге, где примеры в java 5?
Книга &quot;Изучаем Java&quot;Берт Бейтс, Кэтти Сьерра .До этого ничего не читал по java

Хочу стать Java программистом, здесь есть Java программисты?
Здравствуйте, я хочу стать Ява программистом, если здесь есть Ява программисты, пж подскажите плюсы и мунусы профессии Ява программиста,...

Какие шаги предпринять для овладения java и какую среду java посоветуете?
Пока сть опыт по Visual С, Basic; Borland Delphi, CBuilder. Хочется и в java разбираться.

'fr.java': Ошибка #: 300 : method getObject(int) not found in class java.lang.String строка 33, символ 18
'fr.java': Ошибка #: 300 : method getObject(int) not found in class java.lang.String строка 33, символ 18

Ошибка /usr/java/bin/java not found
Ja postavil jre1.3.1-fci-i386.rpm na Linux RedHat7.3 v dir /usr/java/jre1.3.1 A potom instaliroval JBuilder7 v /opt/JBuilder7 I v...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru