Hallo miteinander! Ich möchte bei meinem Programm einen TableView einfügen, der die verfügbaren Objekte anzeigt, im weiteren Verlauf soll man dann auch Objekte hinzufügen und löschen können, das ist momentan aber erstmal noch nicht das Problem, so weit bin ich leider noch nicht. Ich habe gerade versucht den TableView zu initialisieren und zur Probe ein paar Objekte erstellt und versucht mir anzeigen zu lassen. Dies klappt allerdings noch nicht. Ich habe eine Vermutung woran es mitunter liegen könnte (wie im Text markiert). Die Tabelle wird mit Objekten gefüllt die über ein Interface definiert werden. Bei den Objekte selbst (rund, rechteckig, quadratisch) wird jeweils die Form in der Klasse vordefiniert und das Gewicht in der Klassenmethode entsprechend berechnet (siehe weiter unten).
Vielleicht kann mir ja jemand weiterhelfen und mir sagen, warum die Daten nicht in der Tabelle dargestellt werden. Vielen Dank schon mal!
Hier erstmal der Code vom Tableview:
Hier der Code beispielhaft von einem der drei Objekte, da sie sich im Grunde kaum unterscheiden (Die Variable Dichte wird im entsprechenden Interface definiert):
Vielleicht kann mir ja jemand weiterhelfen und mir sagen, warum die Daten nicht in der Tabelle dargestellt werden. Vielen Dank schon mal!
Hier erstmal der Code vom Tableview:
Java:
@FXML private TableView<ISpielstein> tableView;
@FXML private TableColumn<ISpielstein, String> formSpalte;
@FXML private TableColumn<ISpielstein, Double> gewichtSpalte;
public void initialize(URL url, ResourceBundle rb) {
formSpalte.setCellValueFactory(new PropertyValueFactory<ISpielstein, String>("form"));
//Hier könnte unter anderem der Fehler sein; die Variable Gewicht ist ein double
gewichtSpalte.setCellValueFactory(new PropertyValueFactory<ISpielstein, Double>("gewicht"));
tableView.setItems(getHaufen());
}
//Habe hier ein paar Objekte zum Testen erstellt
Rund rund = new Rund(21);
Rechteckig rechteckig = new Rechteckig(10, 43);
Quadratisch quadratisch = new Quadratisch(54);
//Und hier zur ObservableList hinzugefügt, welche den TableView füllen soll
public ObservableList<ISpielstein> getHaufen(){
ObservableList <ISpielstein> steine = FXCollections.observableArrayList();
steine.add(rechteckig);
steine.add(quadratisch);
steine.add(rund);
return steine;
}
Hier der Code beispielhaft von einem der drei Objekte, da sie sich im Grunde kaum unterscheiden (Die Variable Dichte wird im entsprechenden Interface definiert):
Java:
//erstellen der Klasse Quadratisch welche die Schnittstelle ISpielstein implementiert
public class Quadratisch implements ISpielstein {
//Variable Seitenlaenge des quadratischen Spielsteins
private double laenge;
//Variable Breite ist gleich der Laenge, da es sich um eine quadratische Grundfläche handelt
private double breite = laenge;
//Variable fuer das Gewicht des Spielsteins
public double gewicht;
//Variable fuer die Form des Spielsteins, wird vorab definiert
public String form = "Quader (quadratisch)";
/*Konstruktor der Klasse Quadratisch, wird in der Main Methode zum Erstellen eines Spielsteins aufgerufen
*wird, bekommt vom dort implementierten Scanner die Laenge und die Nummer übergeben
*/
public Quadratisch(double laenge) {
this.laenge = laenge;
}
//Setter fuer die Laenge
public void setLaenge(double laenge) {
this.laenge = laenge;
}
//Setter fuer die Breite
public void setBreite(double breite) {
this.breite = breite;
}
//Getter fuer die Form
@Override
public String getForm() {
return form;
}
//Getter für das Gewicht; hier wird das Spielsteingewicht berechnet und anschliessend gerundet
@Override
public double getGewicht() {
gewicht = breite * laenge * HOEHE * DICHTE;
gewicht = Math.round(100.0 * gewicht) / 100.0;
return gewicht;
}
//toString Methode gibt die wichtigsten Informationen des Spielsteins als String zurueck
@Override
public String toString() {
return "Form: " + form + ", Gewicht: " + getGewicht() + "g";
}
}