Чтобы реализовать редактирование строки в TableView через заранее созданное окно редактирования в Java, вам потребуется выполнить следующие шаги:
1. Создайте класс, который представляет модель данных вашего TableView. Этот класс должен содержать поля, соответствующие столбцам таблицы. Например, если ваша таблица содержит столбцы "Имя", "Фамилия" и "Возраст", ваш класс модели данных может выглядеть следующим образом:
public class Person { private String name; private String surname; private int age; // конструктор, геттеры и сеттеры для полей класса }
2. Создайте экземпляр класса TableView и определите столбцы, используя методы setCellFactory
для каждого столбца. Внутри каждого метода setCellFactory
вы должны создать экземпляр класса TableCell и переопределить метод updateItem
, чтобы отобразить данные из модели данных в ячейке таблицы. Например:
TableView<Person> tableView = new TableView<>(); TableColumn<Person, String> nameColumn = new TableColumn<>("Имя"); nameColumn.setCellValueFactory(new PropertyValueFactory<>("name")); TableColumn<Person, String> surnameColumn = new TableColumn<>("Фамилия"); surnameColumn.setCellValueFactory(new PropertyValueFactory<>("surname")); TableColumn<Person, Integer> ageColumn = new TableColumn<>("Возраст"); ageColumn.setCellValueFactory(new PropertyValueFactory<>("age")); tableView.getColumns().addAll(nameColumn, surnameColumn, ageColumn);
3. Создайте окно редактирования (например, класс EditWindow
), которое будет отображать текущие данные для выбранной строки. Добавьте компоненты, такие как текстовые поля или комбо-боксы, чтобы позволить пользователю изменять данные. Обратите внимание, что вам также понадобится кнопка "Сохранить" (или аналогичная), чтобы разрешить пользователю сохранить изменения.
4. Установите слушатель на событие, когда строка в TableView выбрана (например, метод setOnMouseClicked
). В этом слушателе вы должны получить данные выбранной строки и передать их в окно редактирования. Например:
tableView.setOnMouseClicked(event -> { if (event.getClickCount() == 2) { Person selectedPerson = tableView.getSelectionModel().getSelectedItem(); if (selectedPerson != null) { EditWindow editWindow = new EditWindow(selectedPerson); // Отобразите окно редактирования } } });
5. В окне редактирования, когда пользователь нажимает "Сохранить", вы должны обновить модель данных (строку в TableView) с новыми значениями. Для этого вы можете использовать метод set
предоставляемый классом ObservableList
, который является источником данных для TableView. Например:
editWindow.getSaveButton().setOnAction(event -> { String newName = editWindow.getNameTextField().getText(); String newSurname = editWindow.getSurnameTextField().getText(); int newAge = Integer.parseInt(editWindow.getAgeTextField().getText()); // Обновить модель данных selectedPerson.setName(newName); selectedPerson.setSurname(newSurname); selectedPerson.setAge(newAge); // Закрыть окно редактирования editWindow.close(); });
6. Наконец, когда происходит обновление модели данных, TableView будет автоматически обновлен, чтобы отобразить новые значения.