Text 在画布上居中文本?

Text 在画布上居中文本?,text,canvas,javafx-2,Text,Canvas,Javafx 2,有人能给我一个关于如何在JavaFX2上居中文本的例子吗 有一些像setTextAlign这样的函数,但我不确定如何使用所有这些方法以及我真正需要的方法。我想将文本垂直和水平居中。您想使用 control.setAlignment(Pos.CENTER); and control.setStyle("-fx-alignment: CENTER;"); 请参阅,以获取一些可下载的示例代码 将文本对齐到中心 将文本基线设置为居中 在画布的中心绘制文本(将其放置在画布宽度和高度的一半) 以

有人能给我一个关于如何在JavaFX2上居中文本的例子吗

有一些像setTextAlign这样的函数,但我不确定如何使用所有这些方法以及我真正需要的方法。我想将文本垂直和水平居中。

您想使用

  control.setAlignment(Pos.CENTER); and

  control.setStyle("-fx-alignment: CENTER;");
请参阅,以获取一些可下载的示例代码

  • 将文本对齐到中心
  • 将文本基线设置为居中
  • 在画布的中心绘制文本(将其放置在画布宽度和高度的一半)
  • 以下是一个示例:

    import javafx.application.Application;
    import static javafx.application.Application.launch;
    import javafx.geometry.VPos;
    import javafx.scene.*;
    import javafx.scene.canvas.*;
    import javafx.scene.layout.StackPane;
    import javafx.scene.text.TextAlignment;
    import javafx.stage.Stage;
    
    public class TextCanvas extends Application {
        @Override public void start(Stage primaryStage) {
            Canvas canvas = new Canvas(175, 40);
            GraphicsContext gc = canvas.getGraphicsContext2D();
            gc.setTextAlign(TextAlignment.CENTER);
            gc.setTextBaseline(VPos.CENTER);
            gc.fillText(
                "Text centered on your Canvas", 
                Math.round(canvas.getWidth()  / 2), 
                Math.round(canvas.getHeight() / 2)
            );
    
            StackPane layout = new StackPane();
            layout.getChildren().addAll(canvas);
    
            primaryStage.setScene(new Scene(layout));
            primaryStage.show();
        }
        public static void main(String[] args) { launch(args); }
    }
    

    Hmm,不幸的是,画布及其所有内容都是一个完整的节点,所以我担心这不会起作用。我粗略地看了一下,我的印象是,这是用于在容器中定位节点,例如在HBox中。但是画布不是容器/画布中的文本不是节点?谢谢jewelsea,完全按照预期工作,看到示例我现在也理解了方法。