JavaFX:setWrapText(true)(WordWrap)在ListView中不起作用 [英] JavaFX: setWrapText(true) (WordWrap) doesn't work in ListView
本文介绍了JavaFX:setWrapText(true)(WordWrap)在ListView中不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在ListView-Cell中激活WordWrap时,文本不会换行。下面是一个示例:
When activating WordWrap in in ListView-Cell the text is not wrapping. Here is a example:
public class ListBug extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
ListView<String> myList = new ListView<String>();
myList.setCellFactory(new Callback<ListView<String>, ListCell<String>>() {
@Override
public ListCell<String> call(ListView<String> param) {
return new ListCell<String>() {
@Override
public void updateItem(String item, boolean empty) {
setWrapText(true);
setText(item);
super.updateItem(item, empty);
}
};
}
});
for (int i = 0; i < 100; i++) {
myList.getItems()
.add("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.");
}
primaryStage.setScene(new Scene(myList));
primaryStage.setTitle("ListWrapBug");
primaryStage.show();
}
}
通常,单元格中的文本应该换行,但整个文本在一行中显示一个水平滚动条。
Normally the text in the cells should wrap but the whole text is in one line an a horizontal scrollbar is shown.
如何在列表单元格中使用WordWrap或者这是一个JavaFX错误??
How can I use WordWrap in a list cell or is this a JavaFX bug??
推荐答案
有完全相同的问题。这是适用于我的代码。
Had exactly the same problem. Here is the code that worked for me.
public class ListBug extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
ListView<String> myList = new ListView<String>();
myList.setCellFactory(new Callback<ListView<String>, ListCell<String>>() {
@Override
public ListCell<String> call(final ListView<String> list) {
return new ListCell<String>() {
{
Text text = new Text();
text.wrappingWidthProperty().bind(list.widthProperty().subtract(15));
text.textProperty().bind(itemProperty());
setPrefWidth(0);
setGraphic(text);
}
};
}
});
for (int i = 0; i < 100; i++) {
myList.getItems()
.add("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.");
}
primaryStage.setScene(new Scene(myList));
primaryStage.setTitle("ListWrapBug");
primaryStage.show();
}
}
这篇关于JavaFX:setWrapText(true)(WordWrap)在ListView中不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文