我想在窗口中显示未知长度的文本。如果文本到达窗口边界,则应将其包装。窗口的初始高度应与文本的高度相匹配。如果用户调整窗口大小,则还应更改文本的宽度。
如何在没有eventHandlers的情况下在JavaFX中实现这一目标?
如果我使用Label,文本将被包装并更改其宽度,但窗口的初始高度不适合整个文本,因此文本将被剪切。
如果我使用Text(文本标签),我需要指定包装宽度。窗口的高度是正确的,但如果我调整窗口大小,文本的宽度不会改变。
答案 0 :(得分:1)
如果您想使用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());