Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java按键未触发事件_Java_Applet_Awt_Keylistener_Awtrobot - Fatal编程技术网

Java按键未触发事件

Java按键未触发事件,java,applet,awt,keylistener,awtrobot,Java,Applet,Awt,Keylistener,Awtrobot,在编写这段代码的过程中,我意识到,如果将其放入一个jar,那么必须有一种优雅的方式来关闭程序。我已选择使用“F1”键。我在网上研究了几篇文章,发现我试图处理它的方式应该是一种可行的方法,但该程序甚至似乎没有触发事件方法。system.out.println从不显示 import java.applet.Applet; import java.awt.AWTException; import java.awt.Robot; import java.awt.event.KeyEvent; impor

在编写这段代码的过程中,我意识到,如果将其放入一个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
  • KeyListener
    仅当窗口中的
    组件具有
    焦点时才起作用

  • 您必须创建一个可见的容器

  • 组件的
    setFocusable()

  • 最好使用Swing
    JComponent

  • 使用
    JFrame
    代替
    JApplet


  • 您从未创建过
    MouseMove
    的实例。你的主要方法就是制造机器人并开始循环。如果对象不存在,则永远无法调用它的某个方法。

    使用小程序时不要使用System.exit()。看一看(教程)。您需要创建.htm文档并添加
    标记以运行小程序。您可以使用
    AppletViewer
    工具或web浏览器启动该htm文档

    file.htm

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

    在我这方面,您的程序运行得很好,您需要单击一次小程序,即System.out.println();代码显示正在按下的键。我找不到任何问题。在我这方面,println()从未启动过。程序将继续无休止地执行:(我想避免任何可见的对象。我希望程序保持不可见,只在按下F1键时停止执行。我的方法不起作用吗?然后你玩安装在PC上的第一个反病毒软件。仍然在学习,认为init()会处理它。除了MouseMove move=new MouseMove();move.init()之外的任何东西在main中需要?因为它仍然没有响应,所以它会崩溃IDE,但实际上不会停止执行。有没有更好的方法来优雅地停止执行?
    >appletviewer file.htm