TableView не отображаются данные - Java
Формулировка задачи:
Подскажите, что не так Вот код контроллера основного окна
Когда я запускаю программу в таблице показывается только серый фон. Сами данные загружаются и создается ObservebleList. Что делать??
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();
}
}Решение задачи: «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() + '\'' +
'}';
}
}