gpt4 book ai didi

JavaFX——在场景中创建多个 Pane

转载 作者:行者123 更新时间:2023-12-01 16:55:18 24 4
gpt4 key购买 nike

所以我必须制作一个 Zodiac Sign GUI,我们的任务是:

  • 左上角有一个标签,右上角有一个TextField(两者都有内边距)
  • GUI 中心有一个退出按钮,两侧都有一个清晰的“找到我”标志
  • 最后,底部中心有一个标签提示标志

我对如何实现这个结果感到非常困惑,因为我是 JavaFX 的新手。我相信我需要一个分支节点和根节点才能获得这种布局。我在实例化按钮、标签等方面不需要帮助,主要是对这种布局如何工作感到困惑。我现在的代码如下:

public class ZodiacGUI extends Application {

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

@Override
public void start(Stage primaryStage) throws Exception {
BorderPane mainPane = new BorderPane();
mainPane.setStyle("-fx-background-color: PINK");
setupControls(mainPane);
Scene scene = new Scene(mainPane);
setStage(primaryStage, scene);

}

public void setStage(Stage primaryStage, Scene scene) {
primaryStage.setWidth(500);
primaryStage.setHeight(200);
primaryStage.setTitle("What is my Zodiac Sign?");
primaryStage.setScene(scene);
primaryStage.show();
}

public void setupControls(BorderPane mainPane) {
Label label = new Label("Enter you birthday formatted as -> mm/dd");
Button exitButton = new Button();
Button findSign = new Button();
Button clear = new Button();
TextField userInput = new TextField();

userInput.setPromptText("Enter birthday");
exitButton.setText("Exit.");
findSign.setText("Find my sign.");
clear.setText("Clear.");

exitButton.setOnAction(e -> System.exit(0));

mainPane.setLeft(label);
mainPane.setRight(userInput);
mainPane.setCenter(exitButton);
mainPane.setCenter(findSign);
mainPane.setCenter(clear);
BorderPane.setAlignment(label, Pos.TOP_LEFT);
BorderPane.setAlignment(userInput, Pos.TOP_RIGHT);
BorderPane.setAlignment(exitButton, Pos.CENTER);
BorderPane.setAlignment(findSign, Pos.CENTER_LEFT);
BorderPane.setAlignment(clear, Pos.CENTER_RIGHT);
}
}

这仅输出三个按钮中的一个,因为我认为这是因为需要添加另一个 BorderPane?这是我想要的结果的草图:

enter image description here

澄清一下,我不需要处理寻找星座等方面的帮助。主要需要布局方面的帮助,因为它已经困扰了我好几天。预先感谢您帮助 JavaFX 新手:)。

最佳答案

您有三行,其中子项数量不同。如果行有多个子项,您可以使用 HBox。

BorderPane mainPane = new BorderPane();
mainPane.setTop(new HBox(topLabel, topField));
mainPane.setCenter(new HBox(centerLabel, centerField, centerButtom));
mainPane.setBottom(bottomCenterButton);

如果您需要超过 3 行(BorderPane 的顶部、中心、底部部分),您可以使用 VBox,其中每个子项都是这样的行:

HBox row1 new HBox(child1, child2)
HBox row2 new HBox(child1, child2, child3)
HBox row3 new HBox(child1)
HBox row4 new HBox(child1, child2)
VBox pane = new VBox(row1, row2, row3, row4);

关于JavaFX——在场景中创建多个 Pane ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61600912/

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