JavaFX Centrar texto en un panel

Sheeraz Gul 12 octubre 2023
JavaFX Centrar texto en un panel

No hay funcionalidad para centrar los nodos en una clase Pane, pero podemos usar StackPane si queremos centrar los nodos. Este tutorial demuestra el uso de un StackPane para centrar texto u otros nodos en JavaFX.

Centro de texto JavaFX en un panel

El StackPane es un tipo de panel que se utiliza para colocar a sus elementos secundarios para que se apilen con otros. Podemos alinear el StackPane para centrar los nodos en el panel.

La propiedad de alineación predeterminada para un StackPane es Pos.CENTER. El StackPane de JavaFX se instancia desde JavaFX.scene.layout.StackPane.

El StackPane tiene dos constructores que se utilizan para diferentes propósitos. La sintaxis de StackPane es:

StackPane Demo = new StackPane();

Los constructores de StackPane son:

  • StackPane(): El diseño se creará con la alineación predeterminada Pos.CENTER.
  • StackPane(Node…. nd): El diseño se creará con la alineación por defecto.

La propiedad de alineación se puede utilizar para alinear los nodos en un StackPane. Hay tres métodos para que StackPane funcione con la alineación:

  • getAlignment(): El método se utiliza para obtener el valor de la propiedad de alineación.
  • setAlignment(Posvalue): El método se utiliza para establecer el valor de la propiedad de alineación.
  • setAlignment(Node child, Posvalue): el método se utiliza para establecer el valor de la propiedad de alineación para un nodo secundario en el StackPane.

Probemos un ejemplo para centrar el texto de los nodos en un panel usando el StackPane. Ver ejemplo:

package delftstack;

import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Sphere;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class JavaFx_StackPane extends Application {
  @Override
  public void start(Stage DemoStage) {
    // Create the text to be centered
    Text Demotext = new Text("Centered Text");
    // Font for the text
    Demotext.setFont(Font.font(null, FontWeight.BOLD, 20));
    // color of the text
    Demotext.setFill(Color.BLUE);
    // position of the text
    Demotext.setX(20);
    Demotext.setY(50);
    // circle
    Circle DemoCircle = new Circle(700, 500, 300);
    // fill color
    DemoCircle.setFill(Color.LIGHTBLUE);
    DemoCircle.setStroke(Color.BLACK);
    // Now Create a Stackpane
    StackPane DemoStackPane = new StackPane();
    // Margin for the above circle
    DemoStackPane.setMargin(DemoCircle, new Insets(50, 50, 50, 50));
    ObservableList li = DemoStackPane.getChildren();
    // Add child nodes to the pane
    li.addAll(DemoCircle, Demotext);
    // Create a scene
    Scene DemoScene = new Scene(DemoStackPane);
    // Set title
    DemoStage.setTitle("Centered Text Sample");
    // Add scene to the stage
    DemoStage.setScene(DemoScene);
    // Display the results
    DemoStage.show();
  }
  public static void main(String args[]) {
    launch(args);
  }
}

El código crea un texto y un círculo en el StackPane y utiliza la alineación predeterminada de la posición central. Ver salida:

Centrar texto en el panel

Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Artículo relacionado - Java JavaFX