如何在JavaFX中为Text
或Label
节点设置centerX和centerY?
AFAIK,中心位置没有特定属性(或方法),但有setLayoutX, setLayoutY
种方法+ relocate
,我无法理解它们是如何工作的。
答案 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);
}
}