2017-06-29 24 views
-1

JavaFXで線やポリラインを描画して接続する方法を知りたいと思います。 私のコードでは、イベント内でシーンを使用することができないという根拠や、これらの変数のいずれもがポリラインの出力を与えるというエラーが発生しています。誰も私が使用したこれらのデータ構造を使用してコードを投稿することはできますか?私が望んでJavaFXでポリラインを描くには?

public void start(Stage stage) { 
     VBox box = new VBox(); 
     final Scene scene = new Scene(box, 300, 250); 
     scene.setFill(null); 

     double x=0.0,y=0.0; 
     EventHandler filter = new EventHandler<InputEvent>() { 
      @Override 
      public void handle(InputEvent event) { 
        Line line = new Line(); 
     line.setStartX(0.0f); 
     line.setStartY(0.0f); 
     line.setEndX(100.0f); 
     line.setEndY(100.0f); 
     box.getChildren().add(line); 


      } 
     }; 
// Register the same filter for two different nodes 
     scene.addEventFilter(MouseEvent.MOUSE_PRESSED, filter); 

     stage.setScene(scene); 
     stage.show(); 

    } 

    public static void main(String[] args) { 
     launch(args); 
    } 

は、イベント内で実際には、各Polilineの状態を表示することができるようにする:

は、ここに私のコードです。

+0

どのようなエラーが表示されますか? –

+0

モデリングに問題があります。それらを結ぶ線を作ってみたいと思います。この行には: Box.getChildren()。追加(行); イベントが実行されるたびにボックスに追加することはできませんか?私はマウスイベントと私のボックスを通信する方法を理解していないよ –

+2

質問では、それはエラーを与えると述べた。実際のエラーとは何ですか?あなたが投稿したコードを実行すると、エラーは表示されません(おそらくあなたが望むことはしませんが、私は行を見ています)。 –

答えて

1

このアプリは、マウスを押すとマウスポインタの位置を保存します。マウスが離されると、マウスポインタの位置が保存されます。次に、この情報を受け取り、線を作成し、その線をシーンに描画します。

import javafx.application.Application; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.layout.AnchorPane; 
import javafx.scene.layout.StackPane; 
import javafx.scene.shape.Line; 
import javafx.stage.Stage; 

/** 
* 
* @author blj0011 
*/ 
public class JavaFXApplication134 extends Application 
{ 
    double startX; 
    double startY; 

    @Override 
    public void start(Stage primaryStage) 
    {  
     AnchorPane root = new AnchorPane(); 

     Scene scene = new Scene(root, 500, 500); 
     scene.setOnMousePressed((event)->{ 
      startX = event.getSceneX(); 
      startY = event.getSceneY(); 
     }); 
     scene.setOnMouseReleased((event)->{ 
      double endX = event.getSceneX(); 
      double endY = event.getSceneY(); 

      Line line = new Line(); 
      line.setStartX(startX); 
      line.setStartY(startY); 
      line.setEndX(endX); 
      line.setEndY(endY); 

      root.getChildren().add(line); 
     }); 
     primaryStage.setTitle("Hello World!"); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) 
    { 
     launch(args); 
    } 

} 
関連する問題