HBox.setAlignments (Pos.CENTER) не работает на одном из HBox в моей программе JavaFX. - PullRequest
0 голосов
/ 02 декабря 2018

В настоящее время я работаю над проектом javaFX, который имеет дело с укладкой 3 панелей друг на друга.Верхняя содержит 5 радиокнопок, в центре - текст «Программирование - это весело», а на нижней панели - две кнопки с символом «=», а на другой - символ «=>».По сути, я закончил программу, но у меня проблемы с центрированием нижних кнопок.Я использовал RadioButtons.setAlignment (Pos.CENTER) для переключателей, и это работало нормально, но по какой-то причине оно не работает, когда я набираю BottomButtons.setAlignment (Pos.CENTER).Буду признателен за любую помощь.

HBox bottomButtons = new HBox(5);
    Button leftb = new Button("<=");
    Button rightb = new Button("=>");       
    bottomButtons.getChildren().addAll(leftb, rightb);

    Pane bottomPane = new Pane();
    bottomButtons.setAlignment(Pos.CENTER); 
    bottomPane.getChildren().addAll(bottomButtons);
    pane.setBottom(bottomPane);

Вот полный код на случай, если я что-то пропустил.

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.RadioButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;
public class Unit08_Prog01 extends Application {
public static void main(String[] args) {
    launch(args);
}
Text text = new Text(40,40,"Programming is fun");   
public BorderPane getPane() {
    text.setFont(new Font(20));
    HBox radioButtons = new HBox(5);
    RadioButton redrb = new RadioButton("Red");
    RadioButton yellowrb = new RadioButton("Yellow");
    RadioButton whiterb = new RadioButton("White");
    RadioButton orangerb = new RadioButton("Orange");
    RadioButton greenrb = new RadioButton("Green");     
    radioButtons.getChildren().addAll(redrb, yellowrb, whiterb, orangerb, greenrb);
    radioButtons.setAlignment(Pos.CENTER);      

    BorderPane pane = new BorderPane();
    pane.setTop(radioButtons);
    ToggleGroup group = new ToggleGroup();
    redrb.setToggleGroup(group);
    yellowrb.setToggleGroup(group);
    whiterb.setToggleGroup(group);
    orangerb.setToggleGroup(group);
    greenrb.setToggleGroup(group);



    Pane centerPane = new Pane();
    centerPane.getChildren().add(text);
    pane.setCenter(centerPane);
    centerPane.setStyle("-fx-border-color: black");

    HBox bottomButtons = new HBox(5);
    Button leftb = new Button("<=");
    Button rightb = new Button("=>");       
    bottomButtons.getChildren().addAll(leftb, rightb);

    Pane bottomPane = new Pane();
    bottomButtons.setPadding(new Insets(0,0,0,225));    
    bottomPane.getChildren().addAll(bottomButtons);
    pane.setBottom(bottomPane);

    whiterb.setSelected(true);
    redrb.setOnAction(e -> {
        if (redrb.isSelected()) {
            centerPane.setStyle("-fx-background-color: red");
        }
    });
    yellowrb.setOnAction(e -> {
        if (yellowrb.isSelected()) {
            centerPane.setStyle("-fx-background-color: yellow");
        }
    });
    whiterb.setOnAction(e -> {
        if (whiterb.isSelected()) {
            centerPane.setStyle("-fx-background-color: white");
        }
    });
    orangerb.setOnAction(e -> {
        if (orangerb.isSelected()) {
            centerPane.setStyle("-fx-background-color: orange");
        }
    });
    greenrb.setOnAction(e -> {
        if (greenrb.isSelected()) {
            centerPane.setStyle("-fx-background-color: green");
        }
    });

    leftb.setOnAction(e -> {
        text.setX(text.getX() - 10 );
    });
    rightb.setOnAction(e -> {
        text.setX(text.getX() + 10);
    });

    return pane;
}

@Override
public void start(Stage primaryStage) throws Exception {
    // TODO Auto-generated method stub
    Scene scene = new Scene(getPane(),500,200);
    primaryStage.setTitle("Unit08_Prog1");
    primaryStage.setScene(scene);
    primaryStage.show();



}

}

1 Ответ

0 голосов
/ 02 декабря 2018

Измените bottomPane с Pane на StackPane и удалите отступы.Также установите выравнивание bottomButtons на Pos.CENTER.

bottomButtons.setAlignment(Pos.CENTER);
StackPane bottomPane = new StackPane();
//bottomButtons.setPadding(new Insets(0,0,0,225));

Панель не будет иметь политику макета по умолчанию.Принимая во внимание, что у StackPane есть политика расположения, и по умолчанию он выравнивается по центру.

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