Позиционирование кнопок с помощью HBox javafx - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь поместить мои две кнопки прямо под ярлыком, и все в центре моей формы. В настоящее время все напечатано в одну строку.

@ Override public void start (Stage primaryStage) выдает исключение {

    HBox hb = new HBox();
    hb.setSpacing(15);
    hb.setPadding(new Insets(15, 20, 5, 10));
    hb.setAlignment(Pos.CENTER);

    Label label = new Label("Greetings! Would you like to purchase cruise ticket for a family of two?");
    hb.getChildren().add(label);

    button1 = new Button("Yes");
    hb.getChildren().add(button1);
    button1.setOnAction(this);

    button2 = new Button("No");
    hb.getChildren().add(button2);
    button2.setOnAction(this);


    Scene scene = new Scene(hb, 550, 250);
    primaryStage.setTitle("Cruise for two!");
    primaryStage.setScene(scene);
    primaryStage.show();
}

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>


<StackPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <VBox alignment="CENTER" maxHeight="-Infinity" maxWidth="-Infinity">
         <children>
            <Label text="Label" />
            <HBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity">
               <children>
                  <Button mnemonicParsing="false" text="Button" />
                  <Button mnemonicParsing="false" text="Button" />
               </children>
            </HBox>
         </children>
      </VBox>
   </children>
</StackPane>
0 голосов
/ 20 ноября 2018

Для получения дополнительной информации о многих параметрах макета, доступных в JavaFX, Oracle предоставляет замечательное учебное пособие , которое я рекомендую вам просмотреть!

HBox всегда размещает своих детей в горизонтальном ряду. Добавляя Label к HBox, JavaFX делает то, что вы говорите.

У вас также есть VBox, который размещает узлы по вертикали. В VBox добавьте свой Label и затем HBox; они будут расположены с HBox под Label.

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class Main extends Application {

    private Button button1;
    private Button button2;

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

    @Override
    public void start(Stage primaryStage) {

        VBox root = new VBox(5);
        root.setPadding(new Insets(10));
        root.setAlignment(Pos.CENTER);

        HBox hb = new HBox();
        hb.setSpacing(15);
        hb.setPadding(new Insets(15, 20, 5, 10));
        hb.setAlignment(Pos.CENTER);

        Label label = new Label("Greetings! Would you like to purchase cruise ticket for a family of two?");
        root.getChildren().add(label);

        button1 = new Button("Yes");
        hb.getChildren().add(button1);

        button2 = new Button("No");
        hb.getChildren().add(button2);

        root.getChildren().add(hb);

        Scene scene = new Scene(root, 550, 250);
        primaryStage.setTitle("Cruise for two!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

РЕЗУЛЬТАТ:

screenshot

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