Как заполнить fxml Tableview из класса контроллера - PullRequest
0 голосов
/ 07 ноября 2019

Я хочу заполнить TableView данными в контроллере, но я не знаю, почему мое решение не работает.

в fxml элемент, который я хочу заполнить, выглядит следующим образом:

      <TableView fx:id="t" layoutX="0" layoutY="30" prefHeight="400" prefWidth="600">
        <columns>
          <TableColumn prefWidth="200" text="name" fx:id="name" />
          <TableColumn prefWidth="200" text="adress" fx:id="adress" />
            <TableColumn prefWidth="200" text="phone" fx:id="phone" />
        </columns>
      </TableView>

и мой Контроллер:

public class controler implements  Initializable  {
    public Pane p;
    public MenuBar menu;
    @FXML public TableView<User> t;
    @FXML public TableColumn<User, String> name;
    @FXML public TableColumn<User, String> adress;
    @FXML public TableColumn<User, String> phone;
    @Override
    public void initialize(URL arg0, ResourceBundle arg1) {
        FXCollections.observableArrayList(new User("zaza","zaza","zaza"));
          menu.prefWidthProperty().bind(p.widthProperty());
          t.getItems().add(new User("John","NewYork","+16879060"));
          t.setEditable(true);
          t.setVisible(true);

    }
}

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

МойПользовательская модель, которую я считаю идеальной:

public class User {
    private SimpleStringProperty name;
    private SimpleStringProperty adress;
    private SimpleStringProperty phone;

    public String getName() {
        return name.get();
    }
    public void setName(SimpleStringProperty name) {
        this.name = name;
    }
    public String getAdress() {
        return adress.get();
    }
    public void setAdress(SimpleStringProperty adress) {
        this.adress = adress;
    }
    public String getPhone() {
        return phone.get();
    }
    public void setPhone(SimpleStringProperty phone) {
        this.phone = phone;
    }
    public User(String name, String adress, String phone) {
        super();
        this.name = new SimpleStringProperty(name);
        this.adress = new SimpleStringProperty(adress);
        this.phone = new SimpleStringProperty(phone);
    }

}

Результаты: enter image description here

...