JavaFX随窗口大小调整文本大小

3
我想在窗口中显示长度未知的文本。如果文本到达窗口边界,文本应该换行。窗口的初始高度应该与文本的高度相匹配。如果用户调整窗口大小,则文本的宽度也应更改。
如何在JavaFX中实现此功能而不使用eventHandlers?
如果我使用Label,则文本会自动换行并更改其宽度,但是窗口的初始高度不适合整个文本,因此文本被剪切。
如果我使用Text(Text标签),则需要指定换行宽度。窗口的高度正确,但是如果我调整窗口大小,则文本的宽度不会更改。
1个回答

2
如果您想使用Text,可以将其wrappingWidthProperty绑定到场景的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场景的 heightProperty 绑定。
label.setWrapText(true);
label.prefHeightProperty().bind(scene.heightProperty());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接