1

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(){}) は Rectangle 型に対して未定義です

詳細情報:

私が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;
4

2 に答える 2

16

あなたのコードは正しく見え、私が見つけることができるすべての例と一致します。これを実証するために、簡単な例をまとめました。

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();
    }
}

長方形をクリックすると、色が青から赤に変わります。

これはロングショットかもしれませんが、Rectangle ではなくライブラリRectangleからタイプを参照していることを確認してください。つまり、インポートが次のようになっていることを確認してください。JavaFXAWT

import javafx.scene.shape.Rectangle;

そしてそうではない

import java.awt.Rectangle;

アップデート

私の元のコメントによると、タイプの間違ったインポートを参照しているように見えますRectangle。import を認識できませんcom.sun.javafx.geom.Rectangle。これは古いバージョンの JavaFX からのものですか?

また、間違ったMouseEventタイプを参照しています。

変化する:

import com.sun.glass.events.MouseEvent;

に:

import javafx.scene.input.MouseEvent;
于 2012-11-13T11:55:34.967 に答える