如何在JavaFX中检查鼠标光标是否位于按钮上?

如何在JavaFX中检查鼠标光标是否位于按钮上?,java,javafx,Java,Javafx,我是Java新手,我想知道是否可以检查鼠标光标是否在按钮上?我的意思是不获取点击事件,而只是在按钮上移动光标 我的工作代码得到点击,然后打印一些东西,但我想改变它一点,我不知道为什么它不工作 public class Main extends Application implements EventHandler<MouseEvent> { Button button; Stage window; Scene scene; @Override public void start(

我是Java新手,我想知道是否可以检查鼠标光标是否在按钮上?我的意思是不获取点击事件,而只是在按钮上移动光标

我的工作代码得到点击,然后打印一些东西,但我想改变它一点,我不知道为什么它不工作

public class Main extends Application implements EventHandler<MouseEvent> {

Button button;
Stage window;
Scene scene;

@Override
public void start(Stage primaryStage) throws Exception {
    Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
    primaryStage.setTitle("Where's the button?");
    button.setText("Click me!");
    button.setOnMouseMoved(this);

    StackPane layout = new StackPane();
    layout.getChildren().add(button);

    Scene scene = new Scene(layout, 300,350);
    primaryStage.setScene(scene);
    primaryStage.show();

}


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

@Override
public void handle(MouseEvent actionEvent) {
    System.out.println("You clicked the button!");
}
}
替换button.setOnMouseMovedthis;用我的密码。这就行了


替换button.setOnMouseMovedthis;用我的密码。这就行了

我为您编写了一些小代码。看一看。它在控制台上打印-呵呵!一旦你把鼠标悬停在你的按钮上

 @Override
    public void start(Stage primaryStage) {
        Button btn = new Button();
        btn.setText("Hover over me.'");

        btn.hoverProperty().addListener((event)->System.out.println("Ho-Ho-Ho-Hovereeed!"));        

        StackPane root = new StackPane();
        root.getChildren().add(btn);

        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("Mouse manpulation example in JavaFX!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

我已经为您编写了一些小代码。看一看。它在控制台上打印-呵呵!一旦你把鼠标悬停在你的按钮上

 @Override
    public void start(Stage primaryStage) {
        Button btn = new Button();
        btn.setText("Hover over me.'");

        btn.hoverProperty().addListener((event)->System.out.println("Ho-Ho-Ho-Hovereeed!"));        

        StackPane root = new StackPane();
        root.getChildren().add(btn);

        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("Mouse manpulation example in JavaFX!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

我想你可以用事件处理程序或css来实现,比如

button.setOnMouseEntered(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent mouseEvent) {                
            System.out.println("Cursor Over Button");
        }
    });
或/使用css样式

.按钮:悬停{ -背景色:红色;
}

我想你可以用事件处理程序或css,比如

button.setOnMouseEntered(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent mouseEvent) {                
            System.out.println("Cursor Over Button");
        }
    });
或/使用css样式

.按钮:悬停{ -背景色:红色; }

每个节点都提供一个hover属性来跟踪鼠标光标是否悬停在其上。通过使用简单的侦听器,您可以检测鼠标何时开始和停止悬停:

button.hoverProperty().addListener((observable, oldValue, newValue) -> {
    if (newValue) {
        System.out.println("Hovering...");
    } else {
        System.out.println("Retreating...");
    }
});
使用此侦听器,如果鼠标当前悬停在按钮上,newValue将始终为true,而当鼠标离开该区域时,newValue将更改为false。

每个节点都提供一个hover属性来跟踪鼠标光标是否悬停在该按钮上。通过使用简单的侦听器,您可以检测鼠标何时开始和停止悬停:

button.hoverProperty().addListener((observable, oldValue, newValue) -> {
    if (newValue) {
        System.out.println("Hovering...");
    } else {
        System.out.println("Retreating...");
    }
});

使用此侦听器,如果鼠标当前悬停在按钮上,newValue将始终为true,而当鼠标离开该区域时,newValue将变为false。

作为注释回答,因为我不再确定:我想我可能记得按钮具有hoverProperty或类似属性。编辑:是的,可能会有帮助!作为评论回答,因为我不确定了:我想我可能记得按钮有hoverProperty或类似的东西。编辑:是的,可能会有帮助!你的代码实际上是做什么的?它在概念上如何回答这个问题?您的代码实际上做了什么?它在概念上如何回答这个问题?