如何在 TableColumn 中显示对象
how to show objects in TableColumn
嘿,每个人都试图在另一个对象中显示一个对象的属性,以使其更清楚我有一个 class 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;
}
有了它,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"));
}
当我执行这段代码时,我只得到 categorie
和 sommereduction
TableColumn 为空,问题出在这两行
sommereduction.setCellValueFactory(new PropertyValueFactory<>("Bondereduction.sommereduction"));
categorie.setCellValueFactory(new PropertyValueFactory<>("Categorie.designation"));
任何人都可以帮助我如何更改 PropertyValueFactory<>
以获取对象而不是字符串,以便它理解我正在尝试在对象内显示字段。感谢任何帮助。
你将不得不更深入地了解你的 PropertyValueFactory<>
像这样的事情:
sommereduction.setCellValueFactory(
Produit -> {
SimpleObjectProperty property = new SimpleObjectProperty();
property.setValue(Produit.getValue().getBondereduction().getSommereduction()));
return property;
}
);
这应该可以满足您的需求。这基本上就是您所做的,只是它更进一步。
它创建一个新的 SimpleObjectProperty
然后使用 Produit
class 获取 Bondereduction
然后它使用该值 return 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;
因为这是您要显示的 class。
嘿,每个人都试图在另一个对象中显示一个对象的属性,以使其更清楚我有一个 class 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;
}
有了它,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"));
}
当我执行这段代码时,我只得到 categorie
和 sommereduction
TableColumn 为空,问题出在这两行
sommereduction.setCellValueFactory(new PropertyValueFactory<>("Bondereduction.sommereduction"));
categorie.setCellValueFactory(new PropertyValueFactory<>("Categorie.designation"));
任何人都可以帮助我如何更改 PropertyValueFactory<>
以获取对象而不是字符串,以便它理解我正在尝试在对象内显示字段。感谢任何帮助。
你将不得不更深入地了解你的 PropertyValueFactory<>
像这样的事情:
sommereduction.setCellValueFactory(
Produit -> {
SimpleObjectProperty property = new SimpleObjectProperty();
property.setValue(Produit.getValue().getBondereduction().getSommereduction()));
return property;
}
);
这应该可以满足您的需求。这基本上就是您所做的,只是它更进一步。
它创建一个新的 SimpleObjectProperty
然后使用 Produit
class 获取 Bondereduction
然后它使用该值 return 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;
因为这是您要显示的 class。