创建鼠标定位器到Javafx矩形[英] Creating a Mouselistner to Javafx rectangle

问题描述

我想在我的 javafx 矩形上创建一个 mouselistner.

这个想法是当我按下矩形时它必须改变颜色?

有人知道如何在 Javafx 中为形状添加侦听器吗?

到目前为止我试过这个:

    final Rectangle rect = new Rectangle();

        rect.setOnMouseClicked(new EventHandler<MouseEvent>() {

            @Override
            public void handle(MouseEvent event) {
                // TODO Auto-generated method stub

            }
        });

但是我得到一个错误提示

<块引用>

方法 setOnMouseClicked(new EventHandler(){}) 是矩形类型未定义

升技更多信息:

我对 rect 的唯一选择是:

rect.add()
rect.contains()
rect.grow();
rect.hashcode()
rect.intersection();

还有一些不重要的.

我使用的导入如下:

import com.sun.glass.events.MouseEvent;
import com.sun.javafx.geom.Rectangle;
import com.sun.javafx.geom.Shape;

推荐答案

您的代码看起来正确,并且与我能找到的任何示例匹配.为了证明这一点,我整理了一个简单的例子:

public class JavaFXApplication extends Application {

    Rectangle rect = new Rectangle(100,100);

    @Override
    public void start(Stage primaryStage) {
        rect.setFill(Color.BLUE);

        rect.setOnMouseClicked(new EventHandler<MouseEvent>()
        {
            @Override
            public void handle(MouseEvent t) {
                rect.setFill(Color.RED);
            }
        });


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

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

        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

单击矩形时,颜色由蓝色变为红色.

这可能是一个很长的镜头,但请确保您引用的是 JavaFX 库中的 Rectangle 类型,而不是 AWT 矩形,即确保您的导入是:

import javafx.scene.shape.Rectangle;

而不是

import java.awt.Rectangle;

更新

根据我的原始评论,您似乎为 Rectangle 类型引用了错误的导入.我无法识别导入 com.sun.javafx.geom.Rectangle,这是来自旧版本的 JavaFX 吗?

您还引用了不正确的 MouseEvent 类型.

变化:

import com.sun.glass.events.MouseEvent;

收件人:

import javafx.scene.input.MouseEvent;

本文地址:https://www.itbaoku.cn/post/978355.html