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());
我想在 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());