2

在编写这段代码的过程中,我意识到如果制作成一个罐子,就必须有一种优雅的方式来关闭程序。我选择使用“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
4

3 回答 3

2
  1. KeyListener只有ComponentFocusWindow 中才有效。

  2. 您必须创建一个visible容器。

  3. setFocusable()对于组件

  4. 最好使用 Swing JComponent

  5. 使用JFrame而不是JApplet.

于 2011-12-20T13:59:54.560 回答
1

您永远不会创建MouseMove. 您的主要方法只是制作机器人并开始循环。如果该对象不存在,则永远无法调用其方法之一。

于 2011-12-20T14:11:01.177 回答
1

使用小程序时不要使用 System.exit()。看看Java Applet(教程)。您需要创建 .htm 文档并添加<applet>标签才能运行小程序。您可以使用AppletViewer工具或网络浏览器来启动该 htm 文档。

文件.htm

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

从命令行启动 Appletviewer 工具或在网络浏览器中打开 .htm。

>appletviewer file.htm
于 2011-12-20T14:14:46.490 回答