Вы можете использовать Text
и получить размер из свойства boundsInLocal
.(Узел Text
не нужно присоединять к сцене, чтобы это работало.)
Следующий код сохраняет ширину Rectangle
такой же, как и размер Text
.
@Override
public void start(Stage primaryStage) throws Exception {
Text text = new Text();
TextField textField = new TextField();
Rectangle rect = new Rectangle(0, 20);
textField.textProperty().addListener((o, oldValue, newValue) -> {
text.setText(newValue);
rect.setWidth(text.getBoundsInLocal().getWidth());
});
Scene scene = new Scene(new VBox(textField, text, rect), 600, 400);
primaryStage.setScene(scene);
primaryStage.show();
}