Не могу заставить мой JavaFX работать успешно. Я использую JRE 10.0.2, как требуется для моего класса - PullRequest
1 голос
/ 07 апреля 2020

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

Exception in Application start method
java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.base/java.lang.reflect.Method.invoke(Unknown Source)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(Unknown Source)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(Unknown Source)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.base/java.lang.reflect.Method.invoke(Unknown Source)
    at java.base/sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)
Caused by: java.lang.RuntimeException: Exception in Application start method
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalArgumentException: StackPane@4df22f20is already inside a scene-graph and cannot be set as root
    at javafx.graphics/javafx.scene.Scene$8.invalidated(Unknown Source)
    at javafx.base/javafx.beans.property.ObjectPropertyBase.markInvalid(Unknown Source)
    at javafx.base/javafx.beans.property.ObjectPropertyBase.set(Unknown Source)
    at javafx.graphics/javafx.scene.Scene.setRoot(Unknown Source)
    at javafx.graphics/javafx.scene.Scene.<init>(Unknown Source)
    at javafx.graphics/javafx.scene.Scene.<init>(Unknown Source)
    at application.Shapes.start(Shapes.java:64)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(Unknown Source)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$11(Unknown Source)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$9(Unknown Source)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(Unknown Source)
    at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(Unknown Source)
    ... 1 more
Exception running application application.Shapes
    package application;

import javafx.application.Application;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane;
import javafx.scene.shape.Rectangle;
import javafx.geometry.Insets;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Line;
import javafx.stage.Stage;
import javafx.scene.Group;
import javafx.scene.Scene;

public class Shapes extends Application {

    @Override
    public void start(Stage primaryStage) {
        BorderPane root = new BorderPane();
        Scene scene = new Scene(root,400,400);
        scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
        primaryStage.setScene(scene);
        primaryStage.show();

        //create rectangle and set properties
        Rectangle rectangle = new Rectangle();
        rectangle.setX(50);
        rectangle.setY(50);

        rectangle.setWidth(100);
        rectangle.setHeight(100);

        rectangle.setStroke(Color.BLUE);
        rectangle.setStrokeWidth(3);
        rectangle.setFill(Color.BLUE);

        //create circle and set properties
        Circle circle = new Circle(50);
        circle.setStroke(Color.RED);

        circle.setStrokeWidth(3);
        circle.setFill(Color.RED);

        //create cross and set properties
        Line vertical = new Line(-50 / 1.5, -50 / 2.5, 50 / 1.5, -50 / 2.5);
        Line horizontal = new Line(0, -50, 0, 50);
        horizontal.setStroke(Color.GREEN);
        horizontal.setStrokeWidth(6);
        vertical.setStroke(Color.GREEN);
        vertical.setStrokeWidth(6);

        //create pane to hold cross
        StackPane cross = new StackPane(vertical, horizontal);

        //create grid and set its properties
        GridPane grid = new GridPane();
        grid.setPadding(new Insets(5, 5, 5, 5));

        //add shapes to grid
        grid.add(cross, 2, 2);
        grid.add(rectangle, 0, 0);
        grid.add(circle, 1, 1);
        grid.add(new Group(vertical, horizontal), 2, 2);

        //create scene and add pane
        Scene newScene = new Scene(grid);

        //set name
        primaryStage.setTitle("Shapes");

        //add the scene to the stage
        primaryStage.setScene(newScene);

        //display stage
        primaryStage.show();


    }

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

}

1 Ответ

0 голосов
/ 07 апреля 2020

Я понял. Я удалил // BorderPane root = new BorderPane (); Сцена сцены = новая сцена (root, 400 400); scene.getStylesheets () добавить (GetClass () getResource ( "приложение css.") toExternalForm ()..). primaryStage.setScene (сцены); primaryStage.show (); //

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...