嘿,大家都试图在另一个内部显示一个对象的属性,以使其更清晰,我有一个类Produit
定义如下:
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;
}
有吸气剂和制定者......
我试图在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"));
}
当我执行此代码时,我只获得categorie
和sommereduction
TableColumn为空,问题出现在这两行中
sommereduction.setCellValueFactory(new PropertyValueFactory<>("Bondereduction.sommereduction"));
categorie.setCellValueFactory(new PropertyValueFactory<>("Categorie.designation"));
任何人都可以帮助我如何更改PropertyValueFactory<>
以获取对象而不是字符串,这样就可以理解我试图在对象中显示一个字段。感谢任何帮助。
答案 0 :(得分:2)
你需要进一步深入了解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;
因为那是你试图展示的课程。