TableView не отображаются данные - Java

Узнай цену своей работы

Формулировка задачи:

Подскажите, что не так Вот код контроллера основного окна
package sample.Controllers;
 
import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.stage.Window;
import sample.Interfaces.impls.CollectionFunctional;
import sample.Objects.Person;
 
import java.io.IOException;
 
public class mainController {
 
    private CollectionFunctional adressBookColl = new CollectionFunctional();
 
    @FXML
    private Button btnAdd;
 
    @FXML
    private Button btnChange;
 
    @FXML
    private Button btnDelete;
 
    @FXML
    private Button btnSearch;
 
    @FXML
    private TextField txtSearch;
 
    @FXML
    private TableView<Person> tbl;
 
    @FXML
    private TableColumn<Person, String> columnPhone;
 
    @FXML
    private TableColumn<Person, String> columnLastName;
 
    @FXML
    private TableColumn<Person, String> columnAdress;
 
    @FXML
    private Label lblNumNote;
 
    private Parent fxmlEdit;
    private FXMLLoader fxmlLoader = new FXMLLoader();
    private EditDialogController editDialogController;
    private Stage editDialogStage;
 
    @FXML
    private void initialize(){
        columnAdress.setCellValueFactory(new PropertyValueFactory<Person, String>("adress"));
        columnLastName.setCellValueFactory(new PropertyValueFactory<Person, String>("lastName"));
        columnPhone.setCellValueFactory(new PropertyValueFactory<Person, String>("phone"));

        adressBookColl.getPersonList().addListener(new ListChangeListener<Person>() {
            @Override
            public void onChanged(Change<? extends Person> c) {
                updateCountLabel();
            }
        });
 
        adressBookColl.fillCollection();
 
        tbl.setItems(adressBookColl.getPersonList());
 
        try{
            fxmlLoader.setLocation(getClass().getResource("../fxml/adw.fxml"));
            fxmlEdit = fxmlLoader.load();
            editDialogController = fxmlLoader.getController();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private void updateCountLabel(){
        lblNumNote.setText("Количество записей: " + adressBookColl.getPersonList().size());
    }
 
    @FXML
    public void actionButtonPressed(ActionEvent event){
        Object source = event.getSource();
 
        if (!(source instanceof Button)){
            return;
        }
 
        Button selectedButton = (Button) source;
 
        Person selectedPerson = tbl.getSelectionModel().getSelectedItem();
 
        Window parentWindow = ((Node)event.getSource()).getScene().getWindow();
 
        editDialogController.setPerson(selectedPerson);
 
        switch(selectedButton.getId()){
            case "btnAdd":{
 
            }
            break;
            case "btnChange":{
                showDialog(parentWindow);
            }
            break;
            case "btnDelete":{
 
            }
            break;
        }
    }
 
    private void showDialog(Window parentWindow){
        if (editDialogStage == null) {
            editDialogStage = new Stage();
            editDialogStage.setTitle("ADW");
            editDialogStage.setMinHeight(150);
            editDialogStage.setMinWidth(300);
            editDialogStage.setResizable(false);
            editDialogStage.setScene(new Scene(fxmlEdit));
            editDialogStage.initModality(Modality.WINDOW_MODAL);
            editDialogStage.initOwner(parentWindow);
        }
 
        editDialogStage.show();
    }
 
}
Когда я запускаю программу в таблице показывается только серый фон. Сами данные загружаются и создается ObservebleList. Что делать??

Решение задачи: «TableView не отображаются данные»

textual
Листинг программы
package sample.Objects;
 
import javafx.beans.property.SimpleStringProperty;
 
/**
 * Created by Akella266 on 07.07.2016.
 */
public class Person {
 
    private SimpleStringProperty phone = new SimpleStringProperty("");
    private SimpleStringProperty lastName = new SimpleStringProperty("");
    private SimpleStringProperty adress = new SimpleStringProperty("");
 
 
 
    public Person() {
    }
 
    public Person(String phone, String lastName, String adress) {
        this.phone.set(phone);
        this.lastName.set(lastName);
        this.adress.set(adress);
    }
 
    public String getPhone() {
 
        return phone.get();
    }
 
    public SimpleStringProperty phoneProperty() {
        return phone;
    }
 
    public void setPhone(String phone) {
        this.phone.set(phone);
    }
 
    public String getLastName() {
        return lastName.get();
    }
 
    public SimpleStringProperty lastNameProperty() {
        return lastName;
    }
 
    public void setLastName(String lastName) {
        this.lastName.set(lastName);
    }
 
    public String getAdress() {
        return adress.get();
    }
 
    public SimpleStringProperty adressProperty() {
        return adress;
    }
 
    public void setAdress(String adress) {
        this.adress.set(adress);
    }
 
    @Override
    public String toString() {
        return "Person{" +
               "phone=" + phone.get() +
                ", lastName='" + lastName.get() + '\'' +
                ", adress='" + adress.get() + '\'' +
                '}';
    }
 
 
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы