javafx 2 - una - Añadiendo espacio entre los botones en VBox
javafx layouts (4)
Como otros han mencionado, puedes usar setSpacing()
.
Sin embargo, también puede usar setMargin()
, no es para el panel (o cuadro en sus palabras), es para Node
individuales. setPadding()
método setPadding()
es para el propio panel. De hecho, setMargin()
toma un nodo como parámetro para que puedas adivinar para qué sirve.
Por ejemplo:
HBox pane = new HBox();
Button buttonOK = new Button("OK");
Button buttonCancel = new Button("Cancel");
/************************************************/
pane.setMargin(buttonOK, new Insets(0, 10, 0, 0)); //This is where you should be looking at.
/************************************************/
pane.setPadding(new Insets(25));
pane.getChildren().addAll(buttonOK, buttonCancel);
Scene scene = new Scene(pane);
primaryStage.setTitle("Stage Title");
primaryStage.setScene(scene);
primaryStage.show();
Podría obtener el mismo resultado si reemplaza esa línea con
pane.setSpacing(10);
Si tiene varios nodos que deberían estar espaciados, el método setSpacing()
es mucho más conveniente porque necesita llamar a setMargin()
para cada nodo individual y eso sería ridículo. Sin embargo, setMargin()
es lo que necesita si necesita márgenes (duh) alrededor de un nodo que puede determinar cuánto a cada lado, porque los métodos setSpacing()
colocan espacios solo entre nodos, no entre el nodo y los bordes de la ventana .
Tengo una colección de botones:
VBox menuButtons = new VBox();
menuButtons.getChildren().addAll(addButton, editButton, exitButton);
Quiero agregar algo de espacio entre estos botones, sin usar una hoja CSS. Creo que debería haber una manera para esto.
setPadding (); Es para los botones en la caja. setMargin (); Debería ser para la propia caja. Pero no encontré una manera para el espacio entre los botones.
Me alegro por cualquier idea. :)
Si está utilizando FXML, use el atributo de spacing
:
<VBox spacing="5" />
Simplemente llame setSpacing
método setSpacing
y pase algún valor. Ejemplo con HBox
(es igual para VBox
):
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.scene.layout.HBoxBuilder;
import javafx.stage.Stage;
public class SpacingDemo extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
stage.setTitle("Spacing demo");
Button btnSave = new Button("Save");
Button btnDelete = new Button("Delete");
HBox hBox = HBoxBuilder.create()
.spacing(30.0) //In case you are using HBoxBuilder
.padding(new Insets(5, 5, 5, 5))
.children(btnSave, btnDelete)
.build();
hBox.setSpacing(30.0); //In your case
stage.setScene(new Scene(hBox, 320, 240));
stage.show();
}
}
Y así es como se ve:
Sin espaciado:
Con espaciado:
VBox
soporta espaciado:
VBox menuButtons = new VBox(5);
o
menuButtons.setSpacing(5);