Я хотел бы сделать в JavaFX получение TableView из базы данных, но у меня есть много записей, которые нужно загрузить небольшими порциями (например, 50 позиций), и что он получает оставшиеся понемногу, когда я прокручиваю колесо прокрутки. Какие-нибудь советы? или где я могу найти хороший пример?Отображение данных после использования прокрутки мыши
1
A
ответ
1
В качестве примера я буду использовать класс Person, представляющий элемент в таблице.
public class Person {
private StringProperty firstName = new SimpleStringProperty(this, "firstName");
private StringProperty lastName = new SimpleStringProperty(this, "lastName");
public Person(String firstName, String lastName) {
setFirsName(firstName);
setLastName(lastName);
}
public void setFirsName(String firstName) {
this.firstName.set(firstName);
}
public String getFirstName() {
return firstName.get();
}
public void setLastName(String lastName) {
this.lastName.set(lastName);
}
public String getLastName() {
return lastName.get();
}
public StringProperty firstNameProperty() {
return firstName;
}
public StringProperty lastNameProperty() {
return lastName;
}
}
Здесь главный класс:
public class TableViewOnScroll extends Application {
private ObservableList<Person> peopleToAdd;
private int start = 0;
private int step = 50;
@Override
public void start(Stage primaryStage) throws Exception {
TableView<Person> tableView = new TableView<Person>();
ObservableList<Person> displayedPeople = getInitialPeople();
peopleToAdd = getPeopleToAdd();
TableColumn<Person, String> firstNameCol = new TableColumn<Person, String>("First Name");
firstNameCol.setCellValueFactory(new PropertyValueFactory("firstName"));
TableColumn<Person,String> lastNameCol = new TableColumn<Person,String>("Last Name");
lastNameCol.setCellValueFactory(new PropertyValueFactory("lastName"));
tableView.getColumns().setAll(firstNameCol, lastNameCol);
tableView.setItems(displayedPeople);
primaryStage.setScene(new Scene(tableView, 600, 400));
primaryStage.show();
// Be sure to put the listener after the stage is shown or the application will throw a NullPointerException
ScrollBar tableViewScrollBar = getTableViewScrollBar(tableView);
tableViewScrollBar.valueProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
double position = newValue.doubleValue();
ScrollBar scrollbar = getTableViewScrollBar(tableView);
if(position == scrollbar.getMax()) {
if(step <= peopleToAdd.size()) {
displayedPeople.addAll(peopleToAdd.subList(start, step));
start = step;
step += 50;
tableView.scrollTo(start);
}
}
}
});
}
public ObservableList<Person> getPeopleToAdd() {
ObservableList<Person> people = FXCollections.observableArrayList();
for(int i = 0; i < 500; i++) {
people.add(new Person("Patty", "Johnson"));
}
return people;
}
public ObservableList<Person> getInitialPeople() {
ObservableList<Person> people = FXCollections.observableArrayList();
for(int i = 0; i < 50; i++) {
people.add(new Person("John", "Smith"));
}
return people;
}
private ScrollBar getTableViewScrollBar(TableView<?> listView) {
ScrollBar scrollbar = null;
for (Node node : listView.lookupAll(".scroll-bar")) {
if (node instanceof ScrollBar) {
ScrollBar bar = (ScrollBar) node;
if (bar.getOrientation().equals(Orientation.VERTICAL)) {
scrollbar = bar;
}
}
}
return scrollbar;
}
public static void main(String[] args) {
launch(args);
}
}
Использование getInitialPeople() и getPeopleToAdd() только для заполнения списков с некоторыми случайными данными.
Смежные вопросы
- 1. Избегайте использования UserControl для прокрутки прокрутки мыши
- 2. Отображение данных в форме после использования activerecord
- 3. Как перерисовать после использования прокрутки?
- 4. Событие триггера при перемещении мыши ПОСЛЕ прокрутки
- 5. AutoHotKey Отображение для мыши
- 6. Колесо прокрутки мыши Колесо прокрутки
- 7. Симуляция прокрутки мыши рубин
- 8. Отображение положения мыши
- 9. Полоса прокрутки исчезает после использования blueimp.
- 10. Отображение данных по горизонтали без полосы прокрутки
- 11. Событие колеса прокрутки мыши в Openlayers 3
- 12. одушевленные прокрутки мыши
- 13. Отображение CIImage после использования CIFilter в GLKView
- 14. jQuery AutoComplete отображение элементов после первого использования
- 15. Чувствительность прокрутки UI для прокрутки колесика мыши
- 16. Избегайте прокрутки мыши или полосы прокрутки
- 17. Отображение данных формы после отправки
- 18. Динамическое отображение полосы прокрутки
- 19. Загадочный вопрос прокрутки после добавления изображения мыши-мышки
- 20. События jQuery мыши не работают после прокрутки списка
- 21. поведение прокрутки мыши в Chromebook
- 22. Обнаружить действия прокрутки мыши jQuery
- 23. Добавить колесо мыши прокрутки способность
- 24. Перемещение видеоролика как прокрутки мыши
- 25. мыши колесо прокрутки DIV элемент
- 26. Скорость прокрутки с положением мыши
- 27. элементы загрузки с прокрутки мыши
- 28. jQuery - Эмуляция события прокрутки мыши
- 29. Отключение прокрутки мыши в Emacs
- 30. отображение данных после вызова ajax в Ember
Вы можете попытаться проверить, находится ли полоса прокрутки внизу, если это правда, вам просто нужно добавить больше элементов в «TableView» и повторить процесс, пока у вас не останется никаких элементов. – aleb2000
Я нашел [этот пример] (http://www.superglobals.net/javafx-listview-lazy-loading/). Он использует 'ListView', но процесс тот же. – aleb2000
ОК, спасибо. Вы можете добавить в ответ – Bartek