javafx如何设置文本或标签的中心位置?

时间:2015-05-28 15:46:21

标签: java javafx

如何在JavaFX中为TextLabel节点设置centerX和centerY?

AFAIK,中心位置没有特定属性(或方法),但有setLayoutX, setLayoutY种方法+ relocate,我无法理解它们是如何工作的。

2 个答案:

答案 0 :(得分:3)

您必须告诉您的父布局如何显示子项。不是孩子如何展示自己。

例如,如果您的按钮位于Hbox内,请执行以下操作:

hbox.setAlignment(Pos.CENTER)

您应该阅读Working with layout以获得更好的理解

答案 1 :(得分:0)

如果您要基于鼠标坐标将文本放在Pane容器中,请尝试

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class CenterTextWithCoordinateDemo extends Application {

    @Override
    public void start(Stage primaryStage){
        Pane pane = new Pane();

        pane.setOnMousePressed(event -> {
            Circle circle = new Circle();
            circle.setRadius(10);
            circle.setFill(Color.BLUE);
            circle.setCenterX(event.getX());
            circle.setCenterY(event.getY());
            pane.getChildren().add(circle);

            Text text = new Text();
            text.setText("This is a long text");
            text.setX(event.getX());
            text.setY(event.getY());
            text.setX(text.getX() - text.getLayoutBounds().getWidth() / 2);
            text.setY(text.getY() + text.getLayoutBounds().getHeight() / 4);
            pane.getChildren().add(text);
        });

        Scene scene = new Scene(pane,600, 600);
        primaryStage.setTitle("Center Text With Coordinate Demo");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

enter image description here