java - 如何在TableColumn中显示对象

标签 java javafx fxml

嘿,每个人都试图在另一个对象中显示一个对象的属性,以使其更清楚我有一个类 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"));
}

当我执行这段代码时,我只得到 categoriesommereduction 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上课抢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;

因为这是您尝试显示的类。

关于java - 如何在TableColumn中显示对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43148635/

相关文章:

java - 在XML文件中编写onClick()与在Java文件中使用onClick函数编写监听器有什么区别?

压缩小数字的Java算法

java - 将 javafx 图像转换为 base64 或从 base64 转换为 base64

java - FXML 文件选择器无法重新打开

JavaFX - 图像、imageview 和

JavaFX Controller 加载

java - 窗口大小调整时的中心面板

java - 无法找出 NoClassDefFoundError : aspose/pdf/Paragraph 的原因

Javafx:未发现工具包异常

java - 更改 JavaFX NullPointerException 中的场景