有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JavaFX如何在网格窗格中垂直对齐HBox中的复选框

首先,生成说明问题的UI的代码:

package test;

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.geometry.VPos;
import javafx.scene.Scene;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ComboBox;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class Main extends Application {

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

    @Override
    public void start(final Stage window) throws Exception {
        // Create a VBox to hold the table and button
        final GridPane root = new GridPane();
        root.setHgap(5);
        root.setVgap(5);

        // Add a combo-box to the first row
        final ComboBox<String> dropdown1 = new ComboBox<>();
        dropdown1.getItems().add("Option 1");
        dropdown1.getSelectionModel().selectFirst();
        root.add(dropdown1, 0, 0);

        // Add a checkbox to the first row
        final CheckBox checkbox1 = new CheckBox("CB Text 1");
        root.add(checkbox1, 1, 0);

        // Add a combo-box to the second row
        final ComboBox<String> dropdown2 = new ComboBox<>();
        dropdown2.getItems().add("Option 2");
        dropdown2.getSelectionModel().selectFirst();
        root.add(dropdown2, 0, 1);

        // Add a checkbox, wrapped in an HBox, to the second row
        final CheckBox checkbox2 = new CheckBox("CB Text 2");
        final HBox hbox = new HBox(checkbox2);
        hbox.setAlignment(Pos.BASELINE_LEFT);
        root.add(hbox, 1, 1);
        GridPane.setValignment(hbox, VPos.BASELINE);

        // Show the JavaFX window
        final Scene scene = new Scene(root);
        window.setScene(scene);
        window.show();
    }
}

上述代码生成以下UI(Java 8u102 Windows x64):

Example Application

如图所示,第二行CheckBox的垂直对齐与ComboBox不对齐。我希望所有内容都与文本基线保持一致。如何使GridPane中的第二行与第一行对齐,而不删除HBox


共 (0) 个答案