在编写这段代码的过程中,我意识到如果制作成jar,就必须有一种优雅的方式来关闭程序。我选择使用键'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
答案 0 :(得分:2)
KeyListener
仅在Component
窗口中有Focus
时才有效。
您必须创建一个visible
容器。
setFocusable()
for Component
最好使用Swing JComponent
。
使用JFrame
代替JApplet
。
答案 1 :(得分:1)
您永远不会创建MouseMove
的实例。您的主要方法只是制作机器人并开始循环。如果对象不存在,则永远不会调用其中一种方法。
答案 2 :(得分:1)
使用applet时不要使用System.exit()。看看Java Applet(教程)。您需要创建.htm文档并添加<applet>
标记以运行applet。您可以使用AppletViewer
工具或网络浏览器来启动该htm文档。
file.htm
<applet code="MouseMove" width="200" height="200"></applet>
从命令行启动Appletviewer工具或在Web浏览器中打开.htm。
>appletviewer file.htm