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