2017-04-02 65 views
1

所以我目前正在嘗試實現一個在線商店(大學的任務)的GUI,並且我卡在列出所有當前訂單的表格中。 圖形用戶界面是基於FXML應用中 我的TableView如下:。FXML TableView「Class fxmlPerson不支持屬性」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> 

類「人」的性質是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(""); 

我還添加了getter-和setter的方法到這些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); 
    } 

現在每次我嘗試運行該項目,我得到錯誤「類fxmlPerson不支持財產‘bestellnr’。

我在本教程中基於此程序:http://docs.oracle.com/javafx/2/fxml_get_started/fxml_tutorial_intermediate.htm,它的工作原理。但只要我開始添加額外的列,我得到這個錯誤。

在此先感謝您的幫助!

+0

您是否爲這些屬性添加了getter和setter? (請參閱http://docs.oracle.com/javafx/2/fxml_get_started/fxml_tutorial_intermediate.htm#sthref10)。如果是這樣,請編輯您的問題以包含它們。 –

+0

@LukeWoodward是的,你可以在編輯的文章中看到。 –

回答

1

FXML文件中使用的屬性名稱與您的getter和setter方法名稱不匹配。

屬性名稱爲bestellnr的屬性必須對應於名稱爲getBestellnrsetBestellnr的方法。您的方法名稱爲getBestellNrsetBestellNr。字母N的大小寫是不同的。

要從屬性名稱獲取getter或setter方法名稱,請首先大寫第一個字母,並將getset放在前面。

將FXML中的屬性bestellnr更改爲bestellNr,或將您的getter和setter方法更改爲getBestellnrsetBestellnr。對屬性名稱和方法名稱不匹配的其他屬性重複此過程。

+0

非常感謝你!有效。我不能相信我浪費了幾個小時才找到那個容易犯的錯誤...... –