2012-11-13 66 views
1

我想在我的javafx矩形上創建一個mouselistner。創建一個Mouselistner到Javafx矩形

想法是矩形必須改變顏色時,我按下它?

有誰知道如何添加一個列表到Javafx中的形狀?

到目前爲止,香港專業教育學院嘗試這樣做:

final Rectangle rect = new Rectangle(); 

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

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

      } 
     }); 

但是我得到一個錯誤說

方法setOnMouseClicked(新的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; 
+0

它有各種onMouse ...性能; http://docs.oracle.com/javafx/2/api/javafx/scene/shape/Rectangle.html –

回答

12

你的代碼看起來正確的,任何的例子我能找到相匹配。爲了證明這一點,我舉了一個快速的例子:

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; 
+0

是的,我是100%肯定:( –