2015-09-18 68 views
0

因此,我正在爲我的Java/SQL講座提供一個關於客戶和建築物的管理工具的項目,這些客戶可以租用這些工具。JavaFX/SceneBuilder StringProperty [value:]單元格中的文本

我爲我的客戶創建了一個.fxml文件,用於搜索sql數據庫並顯示它們,然後在TableView中顯示它們。目前,我只是測試GUI並試圖獲得這些工作,但我無法弄清楚如何正確地在我的TableView中放置文本。我爲我的客戶(Kunde)和我的customer.fxml的控制器類創建了一個類。我還爲我的客戶製作了ObservableList,並將測試用戶放入其中。 TableView實際上「顯示」了行,但不僅僅是該值,而是添加了「[Property] [value:]」,然後是字符串的實際值。但我只想在細胞中擁有真正的價值。 Here是一個小問題的圖片。

所以這裏是我的代碼。我希望任何人都可以幫助我(一些評論或屬性是德文的,但我仍然希望你能理解這是什麼意思)。 CustomerController:

而我的客戶類:

package project.hausverwaltung.model; 

import javafx.beans.property.SimpleIntegerProperty; 
import javafx.beans.property.SimpleStringProperty; 

public class Kunde { 

    private SimpleStringProperty firstName; 
    private SimpleStringProperty lastName; 
    private SimpleStringProperty street; 
    private SimpleStringProperty streetNumber; 
    private SimpleIntegerProperty zip; 
    private SimpleStringProperty city; 
    private SimpleStringProperty birthDate; 
    private SimpleIntegerProperty customerID; 

    public Kunde(String firstName, String lastName, String street, String streetNumber, int zip, String city, 
      int customerID, String birthDate) { 
     this.firstName = new SimpleStringProperty(firstName); 
     this.lastName = new SimpleStringProperty(lastName); 
     this.street = new SimpleStringProperty(street); 
     this.streetNumber = new SimpleStringProperty(streetNumber); 
     this.zip = new SimpleIntegerProperty(zip); 
     this.city = new SimpleStringProperty(city); 
     this.birthDate = new SimpleStringProperty(birthDate); 
     this.customerID = new SimpleIntegerProperty(customerID); 
    } 

    public SimpleStringProperty getFirstName() { 
     return firstName; 
    } 

    public void setFirstName(SimpleStringProperty firstName) { 
     this.firstName = firstName; 
    } 

    public SimpleStringProperty getLastName() { 
     return lastName; 
    } 

    public void setLastName(SimpleStringProperty lastName) { 
     this.lastName = lastName; 
    } 

    public SimpleStringProperty getStreet() { 
     return street; 
    } 

    public void setStreet(SimpleStringProperty street) { 
     this.street = street; 
    } 

    public SimpleStringProperty getStreetNumber() { 
     return streetNumber; 
    } 

    public void setStreetNumber(SimpleStringProperty streetNumber) { 
     this.streetNumber = streetNumber; 
    } 

    public SimpleIntegerProperty getZip() { 
     return zip; 
    } 

    public void setZip(SimpleIntegerProperty zip) { 
     this.zip = zip; 
    } 

    public SimpleStringProperty getCity() { 
     return city; 
    } 

    public void setCity(SimpleStringProperty city) { 
     this.city = city; 
    } 

    public SimpleStringProperty getBirthDate() { 
     return birthDate; 
    } 

    public void setBirthDate(SimpleStringProperty birthDate) { 
     this.birthDate = birthDate; 
    } 

    public SimpleIntegerProperty getCustomerID() { 
     return customerID; 
    } 

    public void setCustomerID(SimpleIntegerProperty customerID) { 
     this.customerID = customerID; 
    } 

} 

我希望你們任何人都可以給我一點提示,有什麼錯我的代碼,以及如何解決它。非常感謝!

回答

0

對模型類(Kunde)使用JavaFX Properties pattern(這是常規Java Bean模式的一個相當簡單的擴展)。換句話說,通過通常的get/set方法定義一個String屬性firstName,該方法由一個observable屬性實現,然後爲屬性本身定義一個存取方法。

您也應該像往常一樣編程接口,而不是將實現類用作模型類的公共API的一部分。

具體來說,它應該看起來像:

public class Kunde { 

    // Properties: 

    private final StringProperty firstName = new SimpleStringProperty(); 

    public StringProperty firstNameProperty() { 
     return firstName ; 
    } 

    public final String getFirstName() { 
     return firstNameProperty().get(); 
    } 

    public final void setFirstName(String firstName) { 
     firstNameProperty().set(firstName); 
    } 

    // similarly for other properties 

    // Constructor: 

    public Kunde(String firstName /* , ... */) { 
     // Note there is no problem in calling setFirstName(...) 
     // from the constructor as it is a final method: 
     setFirstName(firstName); 

     // ... 
    } 

} 
+0

酷非常感謝,爲我工作! – Fetzi

相關問題