Java FX-在网格中对齐复选框的建议

Java FX-在网格中对齐复选框的建议,java,checkbox,javafx,grid,alignment,Java,Checkbox,Javafx,Grid,Alignment,在这里从Swing转换为FX。我们有一些复选框,其中标签显示在复选框的左侧。我们通过打电话来实现这一点 setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT); 问题是,在某些网格窗格中,第0列中有一个标签,第1行第1列中有一个节点,然后第二行中有一个复选框。理想情况下,复选框和节点彼此对齐。我目前正在通过将复选框的columnSpan设置为2,并添加一些正确的填充来对齐字段来实现这一点。有没有更简单的方法 我们以前的解决方案是将标签与复选框分开,但

在这里从Swing转换为FX。我们有一些复选框,其中标签显示在复选框的左侧。我们通过打电话来实现这一点

setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT);
问题是,在某些网格窗格中,第0列中有一个标签,第1行第1列中有一个节点,然后第二行中有一个复选框。理想情况下,复选框和节点彼此对齐。我目前正在通过将复选框的columnSpan设置为2,并添加一些正确的填充来对齐字段来实现这一点。有没有更简单的方法

我们以前的解决方案是将标签与复选框分开,但是这导致我们在单击标签时失去选择/取消选择复选框的功能

编辑:

我正在尝试找出将复选框与字段对齐的最佳方法。

我看不到一种“好”的方法来实现您想要的功能:我能想到的最好方法是将标签与复选框分开,并使用标签注册鼠标侦听器以切换复选框的状态。也许其他人可以找到一种更优雅的方法来做到这一点

SSCCE:

import javafx.application.Application;
import javafx.geometry.HPos;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Priority;
import javafx.stage.Stage;

public class AlignedCheckBox extends Application {

    @Override
    public void start(Stage primaryStage) {
        GridPane grid = new GridPane();
        Label checkboxLabel = new Label("Selected:");
        CheckBox checkBox = new CheckBox();
        checkboxLabel.setLabelFor(checkBox);

        checkboxLabel.setOnMouseClicked(e -> checkBox.setSelected(! checkBox.isSelected()));

        Label textFieldLabel = new Label("Enter text:");
        TextField textField = new TextField();

        grid.addRow(0, checkboxLabel, checkBox);
        grid.addRow(1, textFieldLabel, textField);

        ColumnConstraints leftCol = new ColumnConstraints();
        leftCol.setHalignment(HPos.RIGHT);
        leftCol.setHgrow(Priority.SOMETIMES);

        ColumnConstraints rightCol = new ColumnConstraints();
        rightCol.setHalignment(HPos.LEFT);
        rightCol.setHgrow(Priority.ALWAYS);

        grid.getColumnConstraints().addAll(leftCol, rightCol);

        grid.setHgap(10);
        grid.setVgap(10);
        grid.setPadding(new Insets(20));

        Scene scene = new Scene(grid);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

你能发布一张你想要实现的目标的截图吗?不清楚(至少对我来说不清楚…)是的,更清楚。虽然现在我明白了这个问题,但我没有解决办法……:)。添加动画GIF现在很流行,也许你也可以:)我觉得那些真的很烦人;当我试图阅读其他人的代码时,我最不希望看到的就是在我的视野边缘有东西急促地移动。(也许我老了……)