1

如果我将控件(或带有控件的布局)放在 VBox 中,所有元素都会以相同的方式对齐。我想像这样更改其中一个元素的对齐方式

VBox 对齐演示

我试图Button 2通过调用setAlignment()它来改变对齐方式,但是调用setAlignment()单个元素并不会改变 VBox 内的对齐方式。(JavaDoc 对 Button.setAlignment() 的解释是无用的。)

我能够Button 4通过使用 HBox 并设置其对齐方式来更改对齐方式。如果不需要,我宁愿不引入额外的节点。有没有办法改变布局容器中一个节点的对齐方式而不必使用另一个布局?

这是代码:

    public class VBoxAlignmentDemoApplication extends Application {

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


    @Override
    public void start(Stage primaryStage) throws Exception {

        FXMLLoader loader = new FXMLLoader(getClass().getResource("/VBoxAlignmentDemo.fxml"));
        Parent root = loader.load();

        Scene scene = new Scene(root);
        primaryStage.setScene(scene);
        primaryStage.setTitle("VBoxAlignmentDemo");
        primaryStage.show();
    }
}

public class VBoxAlignmentDemoController implements Initializable {

    @FXML
    VBox vbox;

    @FXML
    Button button2;

    public void initialize(URL arg0, ResourceBundle arg1) {
        button2.setAlignment(Pos.CENTER_RIGHT);
    }
}

<VBox fx:id="vbox" alignment="CENTER_LEFT" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefWidth="200.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="vbox.alignment.demo.VBoxAlignmentDemoController">
   <children>
      <Button mnemonicParsing="false" text="Button 1" />
      <Button fx:id="button2" mnemonicParsing="false" text="Button 2" />
      <Button mnemonicParsing="false" text="Button 3" />
      <HBox alignment="CENTER">
         <children>
            <Button mnemonicParsing="false" text="Button 4" />
         </children>
      </HBox>
   </children>
</VBox>
4

0 回答 0