ControlxFX TableView Filter возвращает java.lang.NullPointerException при поиске - PullRequest
0 голосов
/ 05 января 2019

Я настраиваю фильтр JavaFX TableView, используя компонент TextField, и я пытаюсь реализовать фильтр jar ControlxFX, где я могу фильтровать столбцы, как на листе Excel. Добавление метода TableFilter.forTableView(tableView) в конец кода и при вводе букв в TextField отфильтрует просмотр таблицы, но вернет java.lang.NullPointerException с большой задержкой в ​​результатах поиска.

Удаление метода TableFilter.forTableView(tableView) устранит проблему, но Фильтр из столбцов останется с теми же значениями, даже если просмотр таблицы покажет меньше.

/MainController.php

.....

    @FXML
    private TextField searchPacientTextField;

......


 @FXML

   // On Key Released

    private void searchPacients(KeyEvent event) {

        FilteredList<Pacients> filterpacients = new FilteredList<>(listp, e -> true);
        searchPacientTextField.setOnKeyReleased(e -> {

            searchPacientTextField.textProperty().addListener((observable, oldValue, newValue) -> {

                filterpacients .setPredicate((Predicate<? super Pacients>) pacient -> {

                    if (newValue == null || newValue.isEmpty()) {
                        return true;
                    }
                    String lowerCaseFilter = newValue.toLowerCase();
                    if (String.valueOf(pacient.getID()).contains(lowerCaseFilter)) {
                        return true;
                    } else if (pacient.getNumeP().toLowerCase().contains(lowerCaseFilter)) {
                        return true;
                    } else if (pacient.getMedic().toLowerCase().contains(lowerCaseFilter)) {
                        return true;
                    } else if (pacient.getTehnician().toLowerCase().contains(lowerCaseFilter)) {
                        return true;
                    }

                    return false;

                });
              });

            SortedList<Pacients> sortedData = new SortedList<>(filterpacients );
            sortedData.comparatorProperty().bind(tableView.comparatorProperty());
            tableView.setItems(sortedData);

            //The ControlsFX Table Filter
        TableFilter.forTableView(tableView).apply();

        });

    }

Удаление строки TableFilter.forTableView(tableView).apply(); все равно отсортирует список, но не вернет java.lang.NullPointerException.

С линией

  1. Поиск имени

  2. Возвращает результаты и при щелчке правой кнопкой мыши на столбце «Nume Pacient» возвращаются те же результаты

  3. Вернет много исключений

Линия удалена

  1. Поиск имени

  2. Возвращает результаты и при щелчке правой кнопкой мыши по столбцу «Nume Pacient» не возвращает те же результаты и сохраняет старый список

Не вернет никаких исключений, и поиск не будет задерживаться, как указано выше

...