JavaFX 使用 window 调整文本大小

JavaFX resize text with window

我想在 window 中显示未知长度的文本。如果文本到达 window 的边界,则应换行。 window 的初始高度应与文本的高度匹配。如果用户调整 window 的大小,文本的宽度也应该改变。

如何在没有事件处理程序的情况下在 JavaFX 中实现这一点?

如果我使用标签,文本会换行并改变其宽度,但 window 的初始高度不适合整个文本,因此文本会被剪裁。

如果我使用文本(Text-tag),我需要指定一个环绕宽度。 window 的高度是正确的,但是如果我调整 window 的大小,文本的宽度不会改变。

如果您想使用 Text,您可以将其 wrappingWidthProperty 绑定到 scenes's widthProperty

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{

        VBox layout = new VBox(25);
        Text text = new Text("bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla blabla bla bla bla bla bla bla bla bla bla bla blabla bla bla blabla bla bla blabla bla bla bla");
        layout.getChildren().add(text);
        Scene scene = new Scene(layout, 200, 200);
        primaryStage.setScene(scene);
        text.wrappingWidthProperty().bind(scene.widthProperty().subtract(15));
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

同样,如果您想使用 Label,您可以将其 prefHeightProperty 绑定到 scene's heightProperty

label.setWrapText(true);
label.prefHeightProperty().bind(scene.heightProperty());