创建一个Mousebirdner到Javafx矩形

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

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

有谁知道如何在Javafx中为形状添加一个列表器?

到目前为止,我试过这个:

final Rectangle rect = new Rectangle(); rect.setOnMouseClicked(new EventHandler() { @Override public void handle(MouseEvent event) { // TODO Auto-generated method stub } }); 

但是我得到一个错误说

对于Rectangle类型,方法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; 

您的代码看起来正确,并匹配我能找到的任何示例。 为了certificate这一点,我举了一个简单的例子:

 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() { @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 Rectangle,即确保导入为:

 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;