Я хочу, чтобы элементы в моем listView были заглавными и имели разрывы строк.
Я использую setCellFactory для обеспечения реализации Cell.updateItem.Это отлично работает.Когда я добавляю обходной путь для прерывания строк в ListView в мою реализацию ListCell, работает только одна из двух «функций».Первый блок кода начинается со строки 25 и заканчивается строкой 33. Второй блок кода начинается со строки 35 и заканчивается строкой 42. Когда я закомментирую второй блок, все строки в ListView имеют верхний регистр и не имеют разрывов строк.,Когда это не закомментировано, строки имеют разрывы строк и не все в верхнем регистре.Я хочу, чтобы обе "особенности" работали.Как я могу это сделать?
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.ListCell;
import javafx.scene.control.ListView;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import javafx.util.Callback;
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
ListView<String> myList = new ListView<>();
myList.setCellFactory(new Callback<ListView<String>, ListCell<String>>() {
@Override
public ListCell<String> call(final ListView<String> list) {
return new ListCell<String>() {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null || item == null) {
setText(null);
} else {
setText(item.toUpperCase());
}
}
{
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 .
К сожалениюпредставление кода SO не имеет счетчика строк.