2017-04-02 3 views
1

Donc j'essaie actuellement de mettre en place une interface graphique pour une boutique en ligne (affectation pour l'université) et je suis coincé à la table qui liste toutes les commandes en cours. l'interface graphique est basée sur une FXML-application Mon TableView est la suivante:.FXML TableView "Classe fxmlPerson ne supporte pas la propriété" bestellnr "

<TableView fx:id="tableView" prefHeight="400.0" prefWidth="1250.0" GridPane.columnIndex="0" GridPane.rowIndex="1"> 
    <columns> 
     <TableColumn text="Bestellnr."> 
     <cellValueFactory> 
      <PropertyValueFactory property="bestellnr" /> 
     </cellValueFactory> 
     </TableColumn> 
[7 more columns like that, but with different properties] 
    </columns> 
    <items> 
     <FXCollections fx:factory="observableArrayList"> 
     <Person bestellnr="0001" kundennr="0000" kundenname="John Smith" summe="1000" lieferstatus="gesendet" bestelldatum="03.12.1291" liefertermin="05.12.1291" bezahlt="yes" /> 
     </FXCollections> 
    </items> 
</TableView> 

les propriétés de la classe "personne" sont SimpleStringProperties

private final SimpleStringProperty bestellnr = new SimpleStringProperty(""); 
    private final SimpleStringProperty kundennr = new SimpleStringProperty(""); 
    private final SimpleStringProperty kundenname = new SimpleStringProperty(""); 
    private final SimpleStringProperty summe = new SimpleStringProperty(""); 
    private final SimpleStringProperty lieferstatus = new SimpleStringProperty(""); 
    private final SimpleStringProperty bestelldatum = new SimpleStringProperty(""); 
    private final SimpleStringProperty liefertermin = new SimpleStringProperty(""); 
    private final SimpleStringProperty bezahlt = new SimpleStringProperty(""); 

J'ai aussi ajouté getter- et régleurs méthodes à ces SimpleStringProperties:

public String getBestellNr() { 
     return bestellnr.get(); 
    } 

    public void setBestellNr(String fName) { 
     bestellnr.set(fName); 
    } 

    public String getKundenNr() { 
     return kundennr.get(); 
    } 

    public void setKundenNr(String fName) { 
     kundennr.set(fName); 
    } 

    public String getKundenName() { 
     return kundenname.get(); 
    } 

    public void setKundenName(String fName) { 
     kundenname.set(fName); 
    } 

    public String getSumme() { 
     return summe.get(); 
    } 

    public void setSumme(String fName) { 
     summe.set(fName); 
    } 

    public String getLieferStatus() { 
     return lieferstatus.get(); 
    } 

    public void setLieferStatus(String fName) { 
     lieferstatus.set(fName); 
    } 

    public String getBestellDatum() { 
     return bestelldatum.get(); 
    } 

    public void setBestellDatum(String fName) { 
     bestelldatum.set(fName); 
    } 

    public String getLieferTermin() { 
     return liefertermin.get(); 
    } 

    public void setLieferTermin(String fName) { 
     liefertermin.set(fName); 
    } 

    public String getBezahlt() { 
     return bezahlt.get(); 
    } 

    public void setBezahlt(String fName) { 
     bezahlt.set(fName); 
    } 

Maintenant, chaque fois que j'essaie d'exécuter le projet, je reçois l'erreur « classe fxmlPerson ne supporte pas la propriété « bestellnr ».

J'ai basé ce programme sur ce tutoriel: http://docs.oracle.com/javafx/2/fxml_get_started/fxml_tutorial_intermediate.htm et cela fonctionne. Mais dès que je commence à ajouter les colonnes supplémentaires, j'obtiens cette erreur.

Merci d'avance pour votre aide!

+0

Avez-vous ajouté des getters et setters pour ces propriétés? (Voir http://docs.oracle.com/javafx/2/fxml_get_started/fxml_tutorial_intermediate.htm#sthref10). Si oui, veuillez modifier votre question pour les inclure. –

+0

@LukeWoodward Oui, comme vous pouvez le voir dans le post édité. –

Répondre

1

Les noms de propriété utilisés dans votre fichier FXML ne correspondent pas aux noms des méthodes de vos getters et setters.

Une propriété portant le nom bestellnr doit correspondre à des méthodes portant les noms getBestellnr et setBestellnr. Vos méthodes ont des noms getBestellNr et setBestellNr. La capitalisation de la lettre N est la différence. Pour obtenir d'un nom de propriété à un nom de méthode getter ou setter, vous mettez en majuscule la première lettre et vous placez get ou set au recto.

Modifier la propriété bestellnr dans votre FXML à bestellNr ou modifier vos méthodes getter et setter à getBestellnr et setBestellnr. Répétez ce processus pour les autres propriétés où les noms de propriété et les noms de méthode ne correspondent pas.

+0

Merci beaucoup !! Ça a marché. Je ne peux pas croire que j'ai perdu des heures pour trouver cette erreur facile ... –