JavaFX TableViewer zeigt nichts an !!

Kartev

Neues Mitglied
HI,
ich stecke zur zeit in einem kleinen Projekt mit JavaFx und stehe nun leider vor einem kleinen Problem.
Meine Oberfläche ist eine fxml datei und dort verwende ich einen TableViewer zum ausgeben der Inhalte meiner Datenbank. Ich verwende dazu eine ObservableList und eine dazugehörige dataList class. Als ich das ganze Programmiert habe funktionierte es auch, doch jetzt plötzlich gibt er mir keine Inhalte mehr aus
es tut sich zwar etwas und zwar das der Text "Kein Content in Tabelle" verschwindet und ich die Zeilen plötzlich markieren kann doch Inhalt haben die leider nicht. Daraufhin habe ich mal ein Testprojekt erstellt und dort mal alles neu gemacht doch da habe ich das selbe Problem erst klappt es und dann auf einmal nicht mehr. Ich hoffe ihr könnt mir helfen!!


hier meine Controller-Class

Java:
package fxtest3;

import java.net.URL;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;

/**
 *
 * @author Kartev
 */
public class VerwaltungTestController implements Initializable {
    
    @FXML
    private TableView<data> table;
    @FXML
    private TableColumn<data, String> column1;
    @FXML
    private TableColumn<data, String> column2;
    @FXML
    private TableColumn<data, String> column3;
    @FXML
    private TableColumn<data, String> column4;
    @FXML
    private TableColumn<data, String> column5;
    @FXML
    private TableColumn<data, String> column6;
    @FXML
    private TableColumn<data, String> column7;
    
    
    @FXML
    private void Asuche(ActionEvent event) {
        System.out.println("Klicken Asuche");
        
       final ObservableList<data> data = FXCollections.observableArrayList(
            new data("111", "111", "111", "111", "111", "111", "111"),
            new data("111", "111", "111", "111", "111", "111", "111"),
            new data("111", "111", "111", "111", "111", "111", "111")
        );
        
        column1.setCellValueFactory(new PropertyValueFactory<data,String>("kId"));
        column2.setCellValueFactory(new PropertyValueFactory<data,String>("kName"));
        column3.setCellValueFactory(new PropertyValueFactory<data,String>("kVorname"));
        column4.setCellValueFactory(new PropertyValueFactory<data,String>("kAddresse"));
        column5.setCellValueFactory(new PropertyValueFactory<data,String>("kFirmenname"));
        column6.setCellValueFactory(new PropertyValueFactory<data,String>("kTelefonnr"));
        column7.setCellValueFactory(new PropertyValueFactory<data,String>("kEmail"));
        
        table.setItems(data);
    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }    
    
}

und hier meine data-class

Java:
package fxtest3;

import javafx.beans.property.SimpleStringProperty;

/**
 *
 * @author Kartev
 */
public class data {
    private SimpleStringProperty kId;
    private SimpleStringProperty kName;
    private SimpleStringProperty kVorname;
    private SimpleStringProperty kAddresse;
    private SimpleStringProperty kFirmenname;
    private SimpleStringProperty kTelefonnr;
    private SimpleStringProperty kEmail;
 
    data(String Id, String Name, String Vorname, String Addresse, String Firmenname, String Telefonnr, String Email) {
        kId = new SimpleStringProperty(Id);
        kName = new SimpleStringProperty(Name);
        kVorname = new SimpleStringProperty(Vorname);
        kAddresse = new SimpleStringProperty(Addresse);
        kFirmenname = new SimpleStringProperty(Firmenname);
        kTelefonnr = new SimpleStringProperty(Telefonnr);
        kEmail = new SimpleStringProperty(Email);
    }
 
    public String getkId() {
        return kId.get();
    }
    public void setkId(String Id) {
        kId.set(Id);
    }
        
    public String getkName() {
        return kName.get();
    }
    public void setkName(String Name) {
        kName.set(Name);
    }
        
    public String getkVorname() {
        return kVorname.get();
    }
    public void setkVorname(String Vorname) {
        kVorname.set(Vorname);
    }
    
    public String getkAddresse() {
        return kAddresse.get();
    }
    public void setkAddresse(String Addresse) {
        kAddresse.set(Addresse);
    }
        
    public String getkFirmenname() {
        return kAddresse.get();
    }
    public void setkFirmenname(String Firmenname) {
        kFirmenname.set(Firmenname);
    }
        
    public String getkTelefonnr() {
        return kTelefonnr.get();
    }
    public void setkTelefonnr(String Telefonnr) {
        kTelefonnr.set(Telefonnr);
    }
    
    public String getkEmail() {
        return kEmail.get();
    }
    public void setkEmail(String Email) {
        kEmail.set(Email);
    }
        
}

und zu guter letzt meine Main-Class

Java:
package fxtest3;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

/**
 *
 * @author Kartev
 */
public class Main extends Application {
    
    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("VerwaltungTest.fxml"));
        
        Scene scene = new Scene(root);
        
        stage.setScene(scene);
        stage.show();
    }

   
    public static void main(String[] args) {
        launch(args);
    }
    
}

wenn ihr noch irgendetwas wissen wollt dann fragt einfach
und allen schon mal im voraus Dankeschön
 
Bevor ich zu deinem Fehler komme............. Wie lang entwickelst du schon Java?
Klassennamen werden CamelCase geschrieben, beginnend mit einem GROSSEN Buchstaben (nicht "data" sondern "Data"). Bei mir würde sich da schon meine IDE beschweren, würde ich auf den Trichter kommen, das zu tun!
Variablennamen ebenfalls CamelCase, aber mit einem kleinen Buchstaben beginnend. D.h. also statt
[Java]
public void setkEmail(String Email) {
kEmail.set(Email);
}
[/Java]
schreibt man
[Java]
public void setkEmail(String email) {
kEmail.set(email);
}
[/Java]

Das ist der Code-Style von Java. Nicht so, wie man gerade lustig ist. Das macht es einem nur unnötig schwer, deinen Code zu lesen (weil man schier Augenkrebs bekommt).

So. Genug gemeckert! Dein Fehler ist ein ganz einfacher: Wenn du die PropertyValueFactory für die Tabellen verwenden willst, muss dein Modell nicht nur den regulären Getter und Setter für deine Model-Eigenschaften bieten, sondern auch einen speziellen Getter für die Property selbst:
[Java]
private SimpleStringProperty kEmail;

public String getkEmail() {
return kEmail.get();
}
public void setkEmail(String email) {
kEmail.set(email);
}
public SimpleStringProperty kEmailProperty() {
return kEmail;
}
[/Java]

also immer eine Methode, die deine Property zurück gibt und dem Schema [c]public <DeineProperty> <deinVariablenName>Property() { return <deinVariablenName>; }[/c] folgt.
 

Neue Themen


Zurück
Oben