JavaFx文本中心位于X和Y位置
如何将文本的中心动态定位在圆的中心?当前,文本是使用左下角的给定X和Y坐标创建的,但是我希望它们是文本的中心。(红点是圆圈的中心,我想在圆圈中找到文本的中心) 当前: 预期:JavaFx文本中心位于X和Y位置,java,javafx,Java,Javafx,如何将文本的中心动态定位在圆的中心?当前,文本是使用左下角的给定X和Y坐标创建的,但是我希望它们是文本的中心。(红点是圆圈的中心,我想在圆圈中找到文本的中心) 当前: 预期: Label控件将为您执行以下操作: public class Main extends Application { public static void main(String[] args) { launch(args); } @Override public void
Label控件将为您执行以下操作:
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
stage.setTitle("Centered Text");
Circle circle = new Circle(100);
Circle innerCircle = new Circle(98);
innerCircle.setFill(Color.WHITE);
StackPane circles = new StackPane(circle, innerCircle);
Label label = new Label("test", circles);
label.setContentDisplay(ContentDisplay.CENTER);
Pane p = new Pane(label);
Scene scene = new Scene(p);
stage.setScene(scene);
stage.show();
}
}
要使文本垂直居中,请单击 您需要自己计算X坐标。由于您希望文本总宽度的一半保持在250左右,因此需要知道总宽度才能进行计算 CSS在节点位于场景中之前不会应用于节点。但是您可以放弃CSS,这样程序就可以立即知道文本对象的适当首选宽度:
Text text = new Text(250, 250, "test");
text.setFont(Font.font("Arial", 24));
double width = text.prefWidth(-1);
text.setX(250 - width / 2);
text.setTextOrigin(VPos.CENTER);
请显示图像。@RanjitVamadevan添加了图像谢谢答案:D但是我想出了一个答案,让我保留当前的代码结构。我没有测试它,但您应该能够使用
text.applyCss()应用css
@LuciferUchiha起初我也有同样的想法,但我说“如果节点不在场景中,这种方法是不可行的。”很公平,我对这个答案很满意,所以其实并不重要:D
Text text = new Text(250, 250, "test");
text.setFont(Font.font("Arial", 24));
double width = text.prefWidth(-1);
text.setX(250 - width / 2);
text.setTextOrigin(VPos.CENTER);