2017-03-31 58 views
0
對象

嘿大家想顯示內的另一對象的屬性,使其更清楚,我有一個像這樣定義的類Produit如何顯示在TableColumn的

public class Produit { 
private int idproduit; 
private float prixunitaire; 
private String designation; 
private String description; 
private boolean etatp; 
private Bondereduction bondereductions; 
private String lienimg; 
private Categorie categories; 

}

隨着它的getter和setter和....

,我試圖顯示的TableView內這些數據我使用,使像這樣

public class UpdateProdController implements Initializable { 

@FXML 
private TableColumn prixunitaire; 
@FXML 
private TableColumn description; 
@FXML 
private TableColumn designation; 
@FXML 
private TableColumn<Categorie,String> categorie; 
@FXML 
private TableColumn<Bondereduction, String> sommereduction; 
@FXML 
private TableColumn img; 

ObservableList<Produit> prodList = FXCollections.observableArrayList(); 
@FXML 
private TableView<Produit> updatetable; 
String xx=""; 
/** 
* Initializes the controller class. 
*/ 
@Override 
public void initialize(URL url, ResourceBundle rb) { 



    ProduitService pss = new ProduitService(); 
    prodList = pss.SelectProduits(); 
    //String des =prodList.get(0).getCategories().getDesignation().; 
    System.out.println("sqsdqsdqsd " + prodList); 


    updatetable.setItems(prodList); 
    prixunitaire.setCellValueFactory(new PropertyValueFactory<>("prixunitaire")); 
    description.setCellValueFactory(new PropertyValueFactory<>("description")); 
    designation.setCellValueFactory(new PropertyValueFactory<>("designation")); 
    sommereduction.setCellValueFactory(new PropertyValueFactory<>("Bondereduction.sommereduction")); 
    categorie.setCellValueFactory(new PropertyValueFactory<>("Categorie.designation")); 

    img.setCellValueFactory(new PropertyValueFactory<>("lienimg")); 
} 

當我執行這個代碼,我只得到categoriesommereduction的TableColumn空的,問題是這兩條線

sommereduction.setCellValueFactory(new PropertyValueFactory<>("Bondereduction.sommereduction")); 
    categorie.setCellValueFactory(new PropertyValueFactory<>("Categorie.designation")); 

誰能幫助我如何改變PropertyValueFactory<>得到一個對象,而不是字符串,那麼它就會明白那正試圖在對象內顯示一個字段。感謝任何幫助。

回答

1

你必須去一點點進一步深入與PropertyValueFactory<>是這樣的:

sommereduction.setCellValueFactory(
     Produit -> { 
      SimpleObjectProperty property = new SimpleObjectProperty(); 
      property.setValue(Produit.getValue().getBondereduction().getSommereduction())); 
      return property; 
     } 
); 

這應該做你所需要的。這基本上是你所做的,除了它更進一步。

它創建一個新的SimpleObjectProperty,然後使用Produit類獲取Bondereduction,並使用該值返回sommereduction

我也建議改變

@FXML 
private TableColumn<Categorie,String> categorie; 
@FXML 
private TableColumn<Bondereduction, String> sommereduction; 

@FXML 
private TableColumn<Produit,String> categorie; 
@FXML 
private TableColumn<Produit, String> sommereduction; 

因爲那是你正試圖顯示類。

+0

非常感謝你的工作 –