TableView не показывает TableColumns - PullRequest
0 голосов
/ 04 декабря 2018

Я делаю приложение JavaFX, и результат просмотра данных в таблице очень противоречив.Мой код следующий:

@FXML
private TableColumn colName, colSurname, colAge, colID, colTF, colEmail;

private void initializeTable() {
    colName.setCellValueFactory(new PropertyValueFactory<Person, String>("name"));
    colSurname.setCellValueFactory(new PropertyValueFactory<Person, String>("surname"));
    colAge.setCellValueFactory(new PropertyValueFactory<Person, Integer>("age"));
    colID.setCellValueFactory(new PropertyValueFactory<Person, String>("dni")); //why this doesn't work????
    colTF.setCellValueFactory(new PropertyValueFactory<Person, String>("tf")); //why this doesn't work????
    colEmail.setCellValueFactory(new PropertyValueFactory<Person, String>("email"));
    // ...
}

И класс Person:

public class Person {
    public SimpleStringProperty name, surname, dni, tf, email;
    public SimpleIntegerProperty age;

    public Person(String name, String surname, int age, String dni, String tf, String email) {
        this.name = new SimpleStringProperty(name);
        this.surname = new SimpleStringProperty(surname);
        this.dni = new SimpleStringProperty(dni);
        this.tf = new SimpleStringProperty(tf);
        this.email = new SimpleStringProperty(email);
        this.age = new SimpleIntegerProperty(age);
    }

    public String getName() {return name.get();}
    public String getSurname() {return surname.get();}
    public Integer getAge() {return age.get();}
    public String getDNI() {return dni.get();}
    public String getTF() {return tf.get();}
    public String getEmail() {return email.get();}
}

И в таблице показано имя , фамилия , age и email , но НЕ dni или tf .Почему ???

1 Ответ

0 голосов
/ 04 декабря 2018

Спасибо @fabian за помощь в поиске ответа.

Проблема заключалась в том, как сказал @James_D здесь

Имена вашихметоды неверны.Согласно документации PropertyValueFactory, если вы передадите имя свойства «xyz», фабрика значений свойства сначала будет искать метод xyzProperty (), принадлежащий объекту в строке таблицы.Если он этого не найдет, он обратится к поиску метода getXyz () (внимательно посмотрите на заглавные буквы), обернув результат в ReadOnlyObjectWrapper.

Так что решениезатем изменить заглавные буквы в получателях лица на это:

    public String getDni() {return dni.get();}
    public String getTf() {return tf.get();}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...