2017-12-22 13 views
0

私はPointのarraylistを持っています。ポイントからラインを引いてみたい。ここに私がしたことがあります。JavaFX描画複数の点を使用したマルチシェイプ

for (int i = 0; i < arrPoint.size(); i++) { 
      Point startPoint = arrPoint.get(i); 
      Point endPoint = null; 
      if (i == arrPoint.size()) { 
       endPoint = arrPoint.get(0); 
      } else { 
       endPoint = arrPoint.get(i + 1); 
      } 
      Line line = new Line(); 
      line.setStartX(startPoint.getCoordinateX()); 
      line.setEndX(endPoint.getCoordinateX()); 
      line.setStartY(startPoint.getCoordinateY()); 
      line.setEndY(endPoint.getCoordinateY()); 
      box.getChildren().add(line); 
     } 

私のコードが空白で表示され

public class Point { 
    private double coordinateX; 
    private double coordinateY; 

    public Point(double coordinateX, double coordinateY) { 
     this.coordinateX = coordinateX; 
     this.coordinateY = coordinateY; 
    } 

    public void setCoordinateX(double coordinateX) { 
     this.coordinateX = coordinateX; 
    } 

    public void setCoordinateY(double coordinateY) { 
     this.coordinateY = coordinateY; 
    } 

    public double getCoordinateX() { 
     return coordinateX; 
    } 

    public double getCoordinateY() { 
     return coordinateY; 
    } 
} 

のように私のポイントCASSです。私はJavaFxを初めて使用しています。助けてもらえますか?

+0

単に問題を特定するのに十分な情報がありません。私たちは、どのようなレイアウトの 'box'がどこにあるのか、それがどこにあるのかわかりません。さらに、入力データについては何も知らない。これらの行は単に視覚的な領域の一部ではない可能性があります... BTW:[Polygon'クラス](https://docs.oracle.com/javase/8/javafx/api/javafx/scene/shape/)があります。 Polygon.html) – fabian

答えて

0

描画するポイントをループする前に、ポイントを取得する必要があります。

import javafx.application.Application; 
import javafx.collections.FXCollections; 
import javafx.collections.ObservableList; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.scene.paint.Color; 
import javafx.scene.shape.Line; 
import javafx.stage.Stage; 

public class Main extends Application { 
    public static void main(String[] args) { 
     Application.launch(args); 
    } 
    @Override 
    public void start(Stage primaryStage) { 

     primaryStage.setTitle("Draw line"); 


     Group g = new Group(); 
     Scene scene = new Scene(g, 550, 550,Color.web("0x0000FF",1.0)); 

     ObservableList<Point> arrPoint = FXCollections.observableArrayList(); 

     Point point1 = new Point(100, 200); 
     Point point2 = new Point(300, 400); 

     arrPoint.addAll(point1, point2); 

     for (int i = 0; i < arrPoint.size()-1; i++) { 
      Point startPoint = arrPoint.get(i); 
      Point endPoint = null; 
      if (i == arrPoint.size()) { 
       endPoint = arrPoint.get(0); 
      } else { 
       endPoint = arrPoint.get(i + 1); 
      } 
      Line line = new Line(); 
      line.setStartX(startPoint.getCoordinateX()); 
      line.setEndX(endPoint.getCoordinateX()); 
      line.setStartY(startPoint.getCoordinateY()); 
      line.setEndY(endPoint.getCoordinateY()); 
      g.getChildren().add(line); 
     } 



     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 
} 

私はそれがあなたを助けることを願っています。

関連する問題