gpt4 book ai didi

java - 向 StackPane 添加节点问题?

转载 作者:行者123 更新时间:2023-12-01 17:41:45 26 4
gpt4 key购买 nike

在这方面已经有很长一段时间了,一直在尝试各种类型的替代方案,所以我来这里寻求帮助。我需要 16 个正方形来填充 800x800 像素区域。我已经完成了那个任务。然而,现在我希望每个正方形都有一个以它为中心的圆,我想到制作一个 StackPanes 数组。数组中的每个 stackPane 将保存正方形,然后保存圆形(以便圆形位于该正方形的顶部)。这就是我所拥有的。

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.scene.control.RadioButton;
import javafx.scene.layout.VBox;
import javafx.scene.shape.Rectangle;
import javafx.scene.shape.Circle;

/**
* @author Dominic Barbuto
* @date 03/28/2020
*
*/
public class DAB_ShapeGrid extends Application
{
//Scene dimensions
final int SCENE_WIDTH = 1000, SCENE_HEIGHT = 800;
//Square Dimensions
double width = 200, height = 200;

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

public void start(Stage primaryStage)
{
StackPane[] stackPane = new StackPane[16];
DAB_Square[] squareArray= new DAB_Square[16];

int index = 0;
for(int posX = 0; posX < SCENE_WIDTH-200; posX += 200)
{
for(int posY = 0; posY < SCENE_HEIGHT; posY += 200)
{
squareArray[index] = new DAB_Square(posX, posY, width, height);
stackPane[index].getChildren().addAll(squareArray[index], new DAB_Circle(posX+100, posY +100, 100.0));
index++;
}
}

Pane pane = new Pane(stackPane[0], stackPane[1], stackPane[2], stackPane[3],
stackPane[4], stackPane[5], stackPane[6], stackPane[7],
stackPane[8], stackPane[9], stackPane[10], stackPane[11],
stackPane[12], stackPane[13], stackPane[14], stackPane[15]);

RadioButton radioButton = new RadioButton("Test");
VBox rightVBox = new VBox(radioButton);

BorderPane borderPane = new BorderPane();
borderPane.setLeft(pane);
borderPane.setRight(rightVBox);

Scene scene = new Scene(borderPane, SCENE_WIDTH, SCENE_HEIGHT);

primaryStage.setScene(scene);
primaryStage.setTitle("Filling the Grid With Shapes Program");
primaryStage.show();
}
}

我收到一个指向此行的 NullPointerException: stackPane[index].getChildren().addAll(squareArray[index], new DAB_Circle(posX+100, posY +100, 100.0));我一生都无法找出原因。

最佳答案

改变

StackPane[] stackPane = new StackPane[16];

StackPane[] stackPane = new StackPane[16];
for(int i = 0; i < stackPane.length; i++)
{
StackPane tempStackPane = new StackPane();
stackPane[i] = tempStackPane;
}

您从未将任何 StackPanes 添加到 StackPanes 数组中。

旁注:在这种情况下,我建议使用 List 而不是 Array

关于java - 向 StackPane 添加节点问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60941975/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com