如果我将自动换行设置为标签并将其放在任何布局中 - 除非我将标签放入ScrollPane,否则自动换行工作正常.这是一个例子:
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Test");
BorderPane borderPane = new BorderPane();
VBox myView = new VBox();
Label label = new Label("Lorem ipsum dolor sit amet, consectetur adipisicing elit," +
" sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim" +
" ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip" +
" ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate" +
" velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat" +
" cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum");
label.setWrapText(true);
myView.getChildren().addAll(label);
ScrollPane scroll = new ScrollPane();
scroll.setContent(myView);
scroll.setHbarPolicy(ScrollPane.ScrollBarPolicy.NEVER);
borderPane.setCenter(scroll);
Scene scene = new Scene(borderPane, 300, 400);
primaryStage.setResizable(false);
primaryStage.setScene(scene);
primaryStage.sizeToScene();
primaryStage.show();
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让滚动窗格内的自动换行工作?
引用Javadoc:
public final void setWrapText(boolean value)楼盘简介:
如果一行文本超出了Labeled的宽度,则此变量指示文本是否应该换行到另一行.
在您的示例中,因为您没有为标签设置大小,所以它会自动调整大小以适合所有文本.因此,Label知道你希望他包装文本,但是当文本符合他的宽度时,他就没有做任何事情.
现在,如果你为你的标签设置一个pref大小,它将强制他包装文本:
label.setPrefSize(250, 500);
Run Code Online (Sandbox Code Playgroud)
你可以做什么(它可能是一种更好的方法)是告诉你ScrollPane使用setFitToWidth或setFitToHeight方法调整其中的组件.像这样 :
scroll.setFitToWidth(true);
Run Code Online (Sandbox Code Playgroud)
调整窗口大小时,Label的大小将调整为适合ScrollPane的大小,文本将相应地换行.
实现您想要的另一种方法是使用Text对象而不是Label:
Text text = new Text("Lorem ipsum dolor sit amet, consectetur adipisicing elit," +
" sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim" +
" ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip" +
" ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate" +
" velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat" +
" cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum");
text.setWrappingWidth(250);
Run Code Online (Sandbox Code Playgroud)