Javafx,如何检测鼠标位置?

Javafx,如何检测鼠标位置?,java,javafx,Java,Javafx,我使用JavaFX创建了一个蓝色矩形 当鼠标移动到蓝色矩形覆盖的区域时,我可以将矩形的颜色更改为红色吗?当鼠标移出矩形时,我可以将矩形的颜色更改为蓝色吗 我创建的矩形: public class ColorfulRectangle extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage pri

我使用JavaFX创建了一个蓝色矩形

当鼠标移动到蓝色矩形覆盖的区域时,我可以将矩形的颜色更改为红色吗?当鼠标移出矩形时,我可以将矩形的颜色更改为蓝色吗

我创建的矩形:

public class ColorfulRectangle extends Application {

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

    @Override
    public void start(Stage primaryStage) {
    Group root = new Group();
    Scene scene = new Scene(root, 400, 300, Color.WHITE);

    Rectangle rect1 = RectangleBuilder.create()
    .x(50)
    .y(50)
    .width(100)
    .height(100)
    .fill(Color.BLUE)
    .build();

    root.getChildren().add(rect1);
    primaryStage.setScene(scene);
    primaryStage.show();
}
}

您可以将鼠标事件处理程序添加到要跟踪鼠标位置的相应JavaFX组件中:

final Label myLabel = new Label("Mouse Location Monitor");
myLabel.setOnMouseEntered(new EventHandler<MouseEvent>() {
      @Override public void handle(MouseEvent event) {
        String msg = "(x: " + event.getX() + ", y: " + event.getY() + ")";
        // do anything now.
      }
    });
final Label myLabel=新标签(“鼠标位置监视器”);
myLabel.setOnMouseCentered(新的EventHandler(){
@重写公共无效句柄(MouseeEvent事件){
字符串msg=“(x:+event.getX()+”,y:+event.getY()+”;
//现在做任何事。
}
});

我建议你读一读

至于你的回答:

rect1.setOnMouseEntered(new EventHandler<MouseEvent>() {
public void handle(MouseEvent me) {
    rect1.setFill(Color.RED); 
}
});

rect1.setOnMouseExited(new EventHandler<MouseEvent>() {
public void handle(MouseEvent me) {
    rect1.setFill(Color.BLUE); 
}
});
rect1.setOnMouseEntered(新的EventHandler(){
公共无效句柄(MouseEvent me){
rect1.设置填充(颜色:红色);
}
});
rect1.setOnMouseExited(新的EventHandler(){
公共无效句柄(MouseEvent me){
rect1.setFill(颜色:蓝色);
}
});

以及其他答案中描述的基于鼠标事件的解决方案,您也可以使用CSS来实现这一点。在不指定填充的情况下创建
矩形
,并向其添加样式类。(请注意,您正在使用的
Builder
类已被弃用。) 将样式表添加到场景中

@Override
public void start(Stage primaryStage) {
    Group root = new Group();
    Scene scene = new Scene(root, 400, 300, Color.WHITE);

    scene.getStylesheets().add("rectangle-hover.css");

    Rectangle rect1 = new Rectangle(50, 50, 100, 100);
    rect1.getStyleClass().add("my-rectangle");

    root.getChildren().add(rect1);
    primaryStage.setScene(scene);
    primaryStage.show();
}
然后在外部文件中定义样式:

rectangle-hover.css:

.my-rectangle {
    -fx-fill: blue ;
}
.my-rectangle:hover {
    -fx-fill: red ;
}

谢谢你的回复:-)谢谢你的回复:-)