Panel no añadirá a todos los niños a menos agrego texto de forma individual por primera vez en Java / Java FX

DntMesArnd:

Estoy trabajando en un problema de tarea donde yo estoy haciendo un cilindro usando Java y Java FX. El cilindro es re-tamaño en función del tamaño de la ventana.

Comienzo por la creación de una elipse en la parte superior, dos líneas verticales y dos arcos en la parte inferior de (una línea discontinua). Los he unido al panel, para que cambien ya que la ventana se redimensionada.

Cuando trato de ejecutarlo, el programa compila bien (Intelli-J), la nueva ventana de Java aparece, pero el programa parece colgar allí. No puedo acceder a la ventana, justo ver en la barra de programa en mi Mac.

Por alguna razón, cuando agrego el texto individualmente al panel antes de agregar todos con mis formas, funciona bien?

Código está por debajo. Cualquier ayuda sería muy apreciada!

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Arc;
import javafx.scene.shape.ArcType;
import javafx.scene.shape.Ellipse;
import javafx.scene.shape.Line;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class CylinderResize extends Application {
    @Override
    public void start(Stage primaryStage) {
        //Create Pane
        Pane pane = new Pane();
        Scene scene = new Scene(pane);

        //Create Elipse for top
        Ellipse ellipse = new Ellipse();
        //Make the Center X property half of the pane width
        ellipse.centerXProperty().bind(pane.widthProperty().divide(2));
        //Height starts 1/3 the way down
        ellipse.centerYProperty().bind(pane.heightProperty().divide(3));
        //X Radius  is 1/4 the width property and y radius is 1/8 WIDTH property
        ellipse.radiusXProperty().bind(pane.widthProperty().divide(4));
        ellipse.radiusYProperty().bind(pane.heightProperty().divide(8));
        ellipse.setStroke(Color.BLACK);
        ellipse.setFill(Color.WHITE);

        //Create Solid arch for  bottom
        Arc solidArc = new Arc();
        solidArc.centerXProperty().bind(pane.widthProperty().divide(2));
        solidArc.centerYProperty().bind(pane.heightProperty().multiply(2).divide(3));
        solidArc.radiusXProperty().bind(pane.widthProperty().divide(4));
        solidArc.radiusYProperty().bind(pane.heightProperty().divide(8));
        solidArc.setStartAngle(180);
        solidArc.setLength(180);
        solidArc.setType(ArcType.OPEN);
        solidArc.setStroke(Color.BLACK);
        solidArc.setFill(Color.WHITE);

        //Create dashed line for bottom
        Arc dashedArc = new Arc();
        dashedArc.centerXProperty().bind(pane.widthProperty().divide(2));
        dashedArc.centerYProperty().bind(pane.heightProperty().multiply(2).divide(3));
        dashedArc.radiusXProperty().bind(pane.widthProperty().divide(4));
        dashedArc.radiusYProperty().bind(pane.heightProperty().divide(8));
        dashedArc.setStartAngle(0);
        dashedArc.setLength(180);
        dashedArc.setType(ArcType.OPEN);
        dashedArc.setFill(Color.WHITE);
        dashedArc.setStroke(Color.BLACK);

        dashedArc.getStrokeDashArray().addAll(6.0, 21.0);


        //Create Vertical Lines for the sides
        Line leftLine = new Line();
        leftLine.startXProperty().bind(ellipse.centerXProperty().subtract(ellipse.radiusXProperty()));
        leftLine.startYProperty().bind(ellipse.centerYProperty());
        leftLine.endXProperty().bind(solidArc.centerXProperty().subtract(solidArc.radiusXProperty()));
        leftLine.endYProperty().bind(solidArc.centerYProperty());
        leftLine.setStroke(Color.BLACK);

        Line rightLine = new Line();
        rightLine.startXProperty().bind(ellipse.centerXProperty().add(ellipse.radiusXProperty()));
        rightLine.startYProperty().bind(ellipse.centerYProperty());
        rightLine.endXProperty().bind(solidArc.centerXProperty().add(solidArc.radiusXProperty()));
        rightLine.endYProperty().bind(solidArc.centerYProperty());
        rightLine.setStroke(Color.BLACK);

        //Test with a text box
        Text text = new Text(25, 25, "WHY IS THIS REQUIRED?????");

        //Add the objects to the pane
        pane.getChildren().add(text); //WHEN I TAKE THIS LINE OUT, THE PROGRAM JUST HANGS.........
        pane.getChildren().addAll(ellipse, solidArc, dashedArc, leftLine, rightLine);

        //Set Up Stage
        primaryStage.setTitle("Ellipse that scales");
        primaryStage.setScene(scene);
        primaryStage.show();

    }
}
Matt:

No es que nuestro programa se cuelga, pero es el escenario no es el encolado a cualquier cosa es posible solucionarlo mediante el establecimiento de una altura y anchura como tal

primaryStage.setWidth(200);
primaryStage.setHeight(200);

La razón el texto estaba arreglando era porque estaba haciendo un tamaño de la base de que se puede ver visiblemente cuando lo saque ya no puede verlo porque es muy pequeña

También bien hecho en el proyecto, creo que es fresco

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=237266&siteId=1
Recomendado
Clasificación