База данных JavaFx Tableview не видна даже после загрузки данных - PullRequest
1 голос
/ 01 ноября 2019

Так что я пытаюсь показать какое-то значение базы данных в виде таблицы в течение нескольких часов, сначала я не мог ничего показать, но после изучения того, что PropertyValue работает с геттерами, и после их реализации я мог показать свои данные в таблице, нопроблема в том, что некоторые данные не отображаются, и я не совсем понимаю, почему я посмотрел на свой код полностью, но не могу найти ошибку, может быть, кто-то может дать мне указатель.

На рисунке вы можете увидеть, какой результат я получаюи какой тип данных мои значения имеют в классе контроллера sql

package Controllers;

import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ResourceBundle;

import Model.Datenbank;
import Model.flightRouteAddModel;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;

public class FlightRouteOverview implements Initializable {

    public static Connection connection;
    public static Statement statement;
    public Datenbank datenbank;
    overviewAirplaneController controller;

    @FXML
    private TableColumn<flightRouteAddModel, String> startAirport;

    @FXML
    private TableColumn<flightRouteAddModel, String> targetAirport;

    @FXML
    private TableColumn<flightRouteAddModel, String> flightDate;

    @FXML
    private TableColumn<flightRouteAddModel, String> airplane;

    @FXML
    private TableColumn<flightRouteAddModel, Integer> intervall;

    @FXML
    private TableColumn<flightRouteAddModel, Integer> seatCountEco;

    @FXML
    private TableColumn<flightRouteAddModel, Integer> seatCountBus;

    @FXML
    private TableColumn<flightRouteAddModel, Float> priceEco;

    @FXML
    private TableColumn<flightRouteAddModel, Float> priceBus;

    @FXML
    private TableColumn<flightRouteAddModel, Float> distance;

    @FXML
    private TableView<flightRouteAddModel> table;

    public FlightRouteOverview() {


    }

    static ObservableList<flightRouteAddModel> flightList = FXCollections.observableArrayList();
    @Override
    public void initialize(URL location, ResourceBundle resourced) {


        try {
            verbinden();

            // Ablesen
            Statement pStatement =  connection.createStatement();
            ResultSet myRs = pStatement.executeQuery("select * from fluglinie");
            while (myRs.next()) {
                flightList.add(new flightRouteAddModel(myRs.getString("startFlughafen"), myRs.getString("zielFlughafen"), 
                        myRs.getString("startDatum"), myRs.getInt("intervall"), myRs.getString("flugzeug"), 
                        myRs.getInt("anzahlEconomy"), myRs.getInt("anzahlBusiness"), myRs.getFloat("preisEconomy"), 
                        myRs.getFloat("preisBusines"), myRs.getFloat("distanz")));


            }

        } catch (Exception e) {
            System.out.println(e);

        }


        startAirport.setCellValueFactory(new PropertyValueFactory<>("startAirport"));
        targetAirport.setCellValueFactory(new PropertyValueFactory<>("targetAirport"));

        flightDate.setCellValueFactory(new PropertyValueFactory<>("flightDate"));
        airplane.setCellValueFactory(new PropertyValueFactory<>("airplane"));
        intervall.setCellValueFactory(new PropertyValueFactory<>("intervall"));
        seatCountEco.setCellValueFactory(new PropertyValueFactory<>("seatCountEco"));
        seatCountBus.setCellValueFactory(new PropertyValueFactory<>("seatCountBus"));
        priceEco.setCellValueFactory(new PropertyValueFactory<>("priceEco"));
        priceBus.setCellValueFactory(new PropertyValueFactory<>("priceBus"));
        distance.setCellValueFactory(new PropertyValueFactory<>("distance"));

        table.setItems(flightList);


    }

    public void verbinden() throws SQLException, ClassNotFoundException {
        // TODO Auto-generated method stub
        connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/flugverwaltung?autoReconnect=true&"
                + "useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Europe/Berlin", "root", "passwort");

        Class.forName("com.mysql.cj.jdbc.Driver");

    }

}

ModelClass

package Model;

import javafx.beans.property.FloatProperty;
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.SimpleFloatProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;

public class flightRouteAddModel {

    public StringProperty  startAirport;
    public StringProperty  targetAirport;
    public StringProperty  flightDate;
    public IntegerProperty intervall;
    public StringProperty  airPlane;
    public IntegerProperty countEconomy;
    public IntegerProperty countBusiness;
    public FloatProperty   priceEconomy;
    public FloatProperty   priceBusiness;
    public FloatProperty   distance;

    public flightRouteAddModel(String startAirport, String targetAirport, String flightDate,Integer intervall,
                                String airPlane, Integer countEconomy, Integer countBusiness, Float priceEconomy, 
                                    Float priceBusiness, Float distance) {
        super();

        this.startAirport  = new SimpleStringProperty(startAirport);
        this.targetAirport = new SimpleStringProperty(targetAirport);
        this.flightDate    = new SimpleStringProperty(flightDate);
        this.intervall     = new SimpleIntegerProperty(intervall);
        this.airPlane      = new SimpleStringProperty(airPlane);
        this.countEconomy  = new SimpleIntegerProperty(countEconomy);
        this.countBusiness = new SimpleIntegerProperty(countBusiness);

        this.priceEconomy  = new SimpleFloatProperty(priceEconomy);
        this.priceBusiness = new SimpleFloatProperty(priceBusiness);
        this.distance      = new SimpleFloatProperty(distance);


    }

    public String getStartAirport() {
        return startAirport.get();
    }

    public String getTargetAirport() {
        return targetAirport.get();
    }

    public String getFlightDate() {
        return flightDate.get();
    }

    public Integer getIntervall() {
        return intervall.get();
    }

    public String getAirPlane() {
        return airPlane.get();
    }

    public Integer getCountEconomy() {
        return countEconomy.getValue();
    }

    public Integer getCountBusiness() {
        return countBusiness.get();
    }

    public Float getPriceEconomy() {
        return priceEconomy.get();
    }

    public Float getPriceBusiness() {
        return priceBusiness.get();
    }

    public Float getDistance() {
        return distance.get();
    }

}

Результат

DatabseType

1 Ответ

0 голосов
/ 02 ноября 2019

Попробуйте установить CellFactory .setCellFactory () в столбце

То есть, вероятно, проблема не в этом. Я предполагаю, что PropertyValueFactory ожидает, что свойства будут Strings, а не StringProperties. Просто сделайте свой собственный:

startAirport.setCellValueFactory(param-> param.getValue().startAirport);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...