[英]How to anchor text at its center in javafx?
這是代碼:
package je3.thread;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.text.Text;
import javafx.stage.Stage;
/**
* Text seemed to be anchored at the bottom left corner.
* See screenshot here: http://i60.tinypic.com/2mnnmrn.jpg
*/
public class ShowText extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Pane pane = new Pane();
pane.setPadding(new Insets(0, 0, 0, 0));
Text text1 = new Text(20, 20, "Programming fun");
// text1.setFont(Font.font("Courier", BOLD, FontPosture.ITALIC, 15));
Text text2 = new Text(30, 30, "Programming fun");
Text text3 = new Text(40, 40, "Programming fun");
// text3.setFill(Color.RED);
// text3.setUnderline(true);
pane.getChildren().addAll(text1, text2,text3);
Scene scene = new Scene(pane);
primaryStage.setScene(scene);
primaryStage.show();
}
}
結果:
我正在尋找的是一種指定坐標並將給定文本對象的中心錨定到該坐標的方法。
然后是這樣的:
private Text centerTextOnCoordinate( String text, double x, double y )
{
Text txtShape = new Text( x, y, text );
txtShape.setX( txtShape.getX() - txtShape.getLayoutBounds().getWidth() / 2 );
return txtShape;
}
您可以嘗試創建Label而不是Text,然后將translateX綁定到寬度的一半負值,如下所示:
label.translateXProperty().bind(label.widthProperty().divide(2).negate());
// same way to y axis, if needed
label.translateYProperty().bind(label.heightProperty().divide(2).negate());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.