Событие Java при нажатии клавиш не запускается - PullRequest
2 голосов
/ 20 декабря 2011

Во время написания этого кода я понял, что если создать банку, то должен быть изящный способ закрыть программу.Я решил использовать клавишу «F1».Я исследовал несколько статей в Интернете и обнаружил, что способ, которым я пытаюсь справиться с этим, должен быть жизнеспособным, но программа, похоже, даже не запускает метод события.System.out.println никогда не отображается.

import java.applet.Applet;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Random;


public class MouseMove extends Applet implements KeyListener{

public static Random randomGenerator = new Random();
public static int code;

public void init(){
    addKeyListener(this);
}

public void keyPressed(KeyEvent evt){
    code = evt.getKeyCode();
    System.out.println("Key: "+KeyEvent.getKeyText(code));

    if(code == KeyEvent.VK_F1){
        System.exit(0);
    }
}

public void keyTyped(KeyEvent e){   
}
public void keyReleased(KeyEvent e){
}

public static void main(String[] args) {
    // TODO Auto-generated method stub
    try {

        Robot robot = new Robot();          

        while(true){

            robot.mouseMove((int)(Math.random()*1366), (int)(Math.random()*768));
            robot.delay(5000);
            robot.mouseWheel((int)(Math.random()*786));
            robot.delay(5000);
        }
    } catch (AWTException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}//main

}//class

Ответы [ 3 ]

2 голосов
/ 20 декабря 2011
  1. KeyListener работает, только если Component имеет Focus в окне.

  2. Вы должны создать visible Контейнер.

  3. setFocusable() для компонента

  4. Лучше бы использовать Swing JComponent.

  5. Используйте JFrame вместо JApplet.

1 голос
/ 20 декабря 2011

Не используйте System.exit () при работе с апплетами.Взгляните на Java-апплет (учебное пособие).Вам нужно создать документ .htm и добавить тег <applet> для запуска апплета.Вы можете использовать инструмент AppletViewer или веб-браузер для запуска этого документа htm.

file.htm

<applet code="MouseMove" width="200" height="200"></applet>

запустить инструмент Appletviewer из командной строки или открыть .htm в веб-браузере.

>appletviewer file.htm
1 голос
/ 20 декабря 2011

Вы никогда не создаете экземпляр MouseMove.Ваш основной метод просто делает робота и начинает зацикливаться.Если объект не существует, один из его методов никогда не может быть вызван.

...