我想在窗口中显示未知长度的文本。如果文本到达窗口的边界,则应该换行。窗口的初始高度应与文本的高度匹配。如果用户调整窗口大小,文本的宽度也应该改变。
如果没有事件处理程序,我如何在 JavaFX 中实现这一点?
如果我使用标签,文本会被换行并改变其宽度,但窗口的初始高度不适合整个文本,因此文本会被剪裁。
如果我使用文本(Text-tag),我需要指定一个环绕宽度。窗口的高度是正确的,但如果我调整窗口的大小,文本的宽度不会改变。
最佳答案
如果您想使用Text
,您可以将其wrappingWidthProperty
绑定(bind)到场景的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
绑定(bind)。
label.setWrapText(true);
label.prefHeightProperty().bind(scene.heightProperty());
关于text - JavaFX 使用窗口调整文本大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29315469/