2016-04-08 4 views
0

ボタンが付いたシーンがあります。ボタンを押すと新しい矩形オブジェクトが作成されます。形状はドラッグ可能ですが、作成された最新のものだけをドラッグできますか?ここボタンで作成した後にシーンの周りに複数の矩形を移動する

はコードです -

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.layout.Pane; 
import javafx.scene.shape.Rectangle; 
import javafx.stage.Stage; 

public class RectanglesCirclesDrawing extends Application 
{ 
    Rectangle rect; 
    Button button; 
    public static void main(String [] args) 
    { 
     launch(args); 
    } 
    public void start(Stage primaryStage) 
    { 
     Pane root = new Pane(); 
     button = new Button("press me to create a new rectangle!"); 

     // Creating a new rectangle 
     button.setOnAction(e ->{ 
      rect = new Rectangle(); 
      rect.setHeight(200); 
      rect.setWidth(400); 
      root.getChildren().add(rect); 
     }); 

     root.setOnMouseDragged(e ->{ 
      rect.setX(e.getX()); 
      rect.setY(e.getY()); 
     }); 


     root.getChildren().addAll(button); 
     Scene scene = new Scene(root,800,800); 
     primaryStage.setScene(scene); 
     primaryStage.setTitle("Creating Shapes"); 
     primaryStage.show(); 
    } 
} 

私はそれラウンドを取得することが出来るのですか?

答えて

1

うーん...あなたは、本質的に、あなたがルートをドラッグすると、あなたがそれをクリックすることで四角形をドラッグしているかのように、それはですのでので、それは、電子年代xとyに矩形のxとyを設定します

root.setOnMouseDragged(e ->{ 
     rect.setX(e.getX()); 
     rect.setY(e.getY()); 
    }); 

を呼んでいますしかし、あなたは本当にあなたの舞台のどこかをクリックすることができることを意味するあなたのルートをクリックしている、それは長方形をドラッグします。あなたは新しいRectangleに矩形ごとに設定され、その後、あなたはそれだけで四角形を移動しようとしている

button.setOnAction(e ->{ 
    rect = new Rectangle(); 
    ... 

問題があります。

次のRectオブジェクトを作成する前に、ある時点でrect.setOnMouseDragged()........を追加します。

これはそれの要点である必要があります、幸運!

+0

さらに、同じ場所で追加のクリック/タップを取得した場合は、「Z」の順番と長方形を変更します。私。リストを繰り返してください。 – TJA

+0

@Lasagna、brill、それを手に入れました!正しい方向に微笑んでくれてありがとう! – Treeno1

+0

素晴らしい!お役に立てて嬉しいです。時には愚かな間違いはそのように捕まえるのが難しい場合もあります。 – XaolingBao

関連する問題