Je n'arrive pas à centrer un bouton dans une VBox en code Java! J'ai utilisé Scene Builder pour créer un SplitPane avec l'AnchorPane gauche ayant un bouton centré dans une VBox. Je veux recréer ceci, un bouton dans une VBox, dans le bon AnchorPane mais pas dans FXML, dans Java Code. Mais le bouton droit ne centre pas, bien que j'utilise vb.setAlignment(Pos.CENTER);
:JavaFX center Bouton dans la VBox
Mon code FXML:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.SplitPane?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.VBox?>
<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="200.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1" fx:controller="testimageview.MainViewController">
<children>
<SplitPane dividerPositions="0.5" prefHeight="200.0" prefWidth="400.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<items>
<AnchorPane fx:id="leftAnchorPane" minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0">
<children>
<VBox alignment="CENTER" prefHeight="198.0" prefWidth="171.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<children>
<Button mnemonicParsing="false" text="FXML" />
</children>
</VBox>
</children>
</AnchorPane>
<AnchorPane fx:id="rightAnchorPane" minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0" />
</items>
</SplitPane>
</children>
</AnchorPane>
Et mon code de classe Java Controller:
package testimageview;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
public class MainViewController implements Initializable {
@FXML
private AnchorPane leftAnchorPane;
@FXML
private AnchorPane rightAnchorPane;
public MainViewController() {
}
@Override
public void initialize(URL url, ResourceBundle rb) {
VBox.setVgrow(leftAnchorPane, Priority.ALWAYS);
VBox vb = new VBox();
Button rightButton = new Button();
rightButton.setText("Java");
vb.setAlignment(Pos.CENTER);
vb.getChildren().addAll(rightButton);
rightAnchorPane.getChildren().add(vb);
}
}
Pourquoi voudriez-vous utiliser un VBox? Pourquoi pas un FlowLayout? – matt
Eh bien, cela fonctionne dans le FXML avec Scene Builder (volet gauche). Alors pourquoi pas? Ce que je veux dire: Si cela fonctionne avec FXML, ne devrait-il pas aussi fonctionner avec Java (volet de droite)? – gkane
Il semble juste qu'un FlowLayout est celui que vous voulez. – matt