2017-04-02 67 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

非常感谢你!有效。我不能相信我浪费了几个小时才找到那个容易犯的错误...... –