Отображение треугольника в JavaFX с использованием внутреннего класса - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь создать внутренний класс, чтобы создать треугольник на основе заданных переменных, а затем отобразить его в сцене JavaFX. Мой Текущий код показан ниже:

public class OuterClass extends Application {
public class InnerClass extends Polygon {
    Polygon triangle;
    InnerClass(double x, double y, double side) {
        double mySideSqrt = Math.sqrt((side * side) - (side / 2 * side / 2)) / 2;
        double tX = x;
        double tY = y - mySideSqrt;
        double rX = x + side / 2;
        double rY = y + mySideSqrt;
        double lX = x - side / 2;
        double lY = y + mySideSqrt;

        Polygon triangle = new Polygon(tX, tY, rX, rY, lX, lY);
        this.triangle = triangle;
    }
}

@Override
public void start(Stage primaryStage) {
    int myWidth = 600;
    int myHeight = 519;

    primaryStage.setTitle("Triangle");
    Group root = new Group();
    Scene scene = new Scene(root, myWidth, myHeight);

    //Polygon triangle = new Polygon(100.0, 0.0, 200.0, 173.3, 0, 173.3); //100.0, 0.0, 200.0, 100.0, 0.0, 100.0
    InnerClass triangle = new InnerClass(300, 260, 196);
    triangle.setFill(Color.LIGHTGRAY);
    root.getChildren().add(triangle);
    primaryStage.setScene(scene);
    primaryStage.show();
}

}

Когда я отлаживаю код, кажется, что он ломается в строке:

InnerClass triangle = new InnerClass(300, 260, 196);

Поскольку треугольник, созданный во внутреннем классе, не включен в метод и поэтому не отображается в сцене.

Любые идеи о том, как Ican заставить его работать?

1 Ответ

0 голосов
/ 03 мая 2018

Удалить Polygon triangle; и изменить Polygon triangle = new Polygon(tX, tY, rX, rY, lX, lY); this.triangle = triangle; на getPoints().addAll(tX, tY, rX, rY, lX, lY);

Полный класс:

public class InnerClass extends Polygon {
    InnerClass(double x, double y, double side) {
        double mySideSqrt = Math.sqrt((side * side) - (side / 2 * side / 2)) / 2;
        double tX = x;
        double tY = y - mySideSqrt;
        double rX = x + side / 2;
        double rY = y + mySideSqrt;
        double lX = x - side / 2;
        double lY = y + mySideSqrt;

        getPoints().addAll(tX, tY, rX, rY, lX, lY);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...