JavaFX KeyEvent setOnKeyPressed仅适用于按钮?不';我不工作

JavaFX KeyEvent setOnKeyPressed仅适用于按钮?不';我不工作,java,javafx,keyevent,Java,Javafx,Keyevent,我有一个与按钮,但不与圆圈工作的代码 我想做的是在用户按下键盘上的按钮后执行某些操作。下面的代码仅适用于按钮。只需将圆圈更改为按钮(两次)即可查看其工作情况。它不是用于其他任何东西的合适代码吗 提前谢谢 代码: 导入javafx.application.application; 导入javafx.event.EventHandler; 导入javafx.scene.scene; 导入javafx.scene.control.Button; 导入javafx.scene.input.KeyCode

我有一个与按钮,但不与圆圈工作的代码

我想做的是在用户按下键盘上的按钮后执行某些操作。下面的代码仅适用于按钮。只需将圆圈更改为按钮(两次)即可查看其工作情况。它不是用于其他任何东西的合适代码吗

提前谢谢

代码:

导入javafx.application.application;
导入javafx.event.EventHandler;
导入javafx.scene.scene;
导入javafx.scene.control.Button;
导入javafx.scene.input.KeyCode;
导入javafx.scene.input.KeyEvent;
导入javafx.scene.layout.BorderPane;
导入javafx.scene.paint.Color;
导入javafx.scene.shape.Circle;
导入javafx.stage.stage;
公共类ButtonExample扩展了应用程序{
@凌驾
public void start(Stage primaryStage)引发异常{
BorderPane=新的BorderPane();
按钮按钮=新按钮(“按我!”);
//圈
圆圈=新圆圈();
//设置圆的位置
圆。setCenterX(300.0f);
圆。设置中心(135.0f);
//设置圆的半径
圆。设定半径(25.0f);
//设置圆的颜色
圆形。刚毛填充(颜色。棕色);
//设置圆的笔划宽度
圆。设定行程宽度(20);
pane.setCenter(圆圈);//只需将此处(圆圈)更改为(按钮)即可
场景=新场景(窗格,200200);
初级阶段。场景(场景);
primaryStage.show();
circle.setOnKeyPressed(new EventHandler(){///此处
@凌驾
公共无效句柄(KeyEvent事件){
if(event.getCode()==KeyCode.ENTER){
System.out.println(“按回车键”);
}
}
});
}
公共静态void main(字符串[]args){
发射(args);
}
}

来自:“定义当此节点或其子节点具有输入焦点且按下某个键时要调用的函数。”圆如何获得输入焦点?@James_D Ohh我没有发现这一点。我想我所要做的就是查看文档。也许你真正需要做的是向自己阐明你真正想做的事情。圆具有输入焦点可能没有意义(除非您正在为圆和UI中的其他组件实现某种自定义选择)。因此,将关键事件处理程序与循环关联是没有意义的。圆圈就是玩家。每次他按箭头键时,它都会移动。我正在学习keyevents,我想这段代码会对我有所帮助。你把“当用户事件发生时会发生什么”和“发生的事件是什么”混淆了。这件事不是“在圈子里”发生的。当事件发生时,圆就是你要改变的东西。从:“定义一个函数,当这个节点或它的子节点有输入焦点并且按下了一个键时调用。”圆是如何获得输入焦点的?@James_D Ohh没有发现这一点是我的错。我想我所要做的就是查看文档。也许你真正需要做的是向自己阐明你真正想做的事情。圆具有输入焦点可能没有意义(除非您正在为圆和UI中的其他组件实现某种自定义选择)。因此,将关键事件处理程序与循环关联是没有意义的。圆圈就是玩家。每次他按箭头键时,它都会移动。我正在学习keyevents,我想这段代码会对我有所帮助。你把“当用户事件发生时会发生什么”和“发生的事件是什么”混淆了。这件事不是“在圈子里”发生的。圆圈就是事件发生时你所改变的东西。
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.BorderPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;

public class ButtonExample extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        BorderPane pane = new BorderPane();
        Button button = new Button("Press Me!");



        //circle
        Circle circle = new Circle(); 

      //Setting the position of the circle 
      circle.setCenterX(300.0f); 
      circle.setCenterY(135.0f); 

      //Setting the radius of the circle 
      circle.setRadius(25.0f);  

      //Setting the color of the circle 
      circle.setFill(Color.BROWN); 

      //Setting the stroke width of the circle 
      circle.setStrokeWidth(20);    


                pane.setCenter(circle); // JUST CHANGE HERE (circle) to (button) to make it work
        Scene scene = new Scene(pane, 200, 200);
        primaryStage.setScene(scene);
        primaryStage.show();

        circle.setOnKeyPressed(new EventHandler<KeyEvent>() { /////and HERE

            @Override
            public void handle(KeyEvent event) {
                if (event.getCode() == KeyCode.ENTER) {
                    System.out.println("Enter Pressed");
                }
            }
        });



    }



    public static void main(String[] args) {
        launch(args);
    }
}