JavaFX在一个TableView中使用多个类?

问题描述 投票:0回答:1

我有一个问题:我需要创建一个TableView,显示一年内不同疾病的所有死亡人数。问题是,在每一行中,我需要指定存储在死亡类中的省份字段。当我尝试建立TableView的不同列时,我使用了死亡的每一个字段,但是对于省这个字段,我需要在省里面使用一个特定的方法字段,即getName()name。

 @FXML
private TableView<DecessiAnnuali> decessiTableView;

@FXML
private TableColumn<DecessiAnnuali,Integer> decessiIdColumn;

@FXML
private TableColumn<DecessiAnnuali, String> decessiProvinciaColumn;

@FXML
private TableColumn<DecessiAnnuali,Integer> decessiAnnoColumn;

@FXML
private TableColumn<DecessiAnnuali,Integer> decessiIncidentiStradaliColumn;

@FXML
private TableColumn<DecessiAnnuali,Integer> decessiMalattieTumoraliColumn;

@FXML
private TableColumn<DecessiAnnuali,Integer> decessiMalattieCardiovascolariColumn;

@FXML
private TableColumn<DecessiAnnuali,Integer> decessiMalattieContagioseColumn;

private final DecessiAnnualiService decessiAnnualiService = new DecessiAnnualiService();


@Override
public void initialize(URL location, ResourceBundle resources) {
    decessiIdColumn.setCellValueFactory(new PropertyValueFactory<>("id"));
    decessiAnnoColumn.setCellValueFactory(new PropertyValueFactory<>("anno"));
    decessiProvinciaColumn.setCellValueFactory(new PropertyValueFactory<>("provincia"));
    decessiIncidentiStradaliColumn.setCellValueFactory(new PropertyValueFactory<>("incidentiStradali"));
    decessiMalattieTumoraliColumn.setCellValueFactory(new PropertyValueFactory<>("malattieTumorali"));
    decessiMalattieContagioseColumn.setCellValueFactory(new PropertyValueFactory<>("malattieContagiose"));
    decessiMalattieCardiovascolariColumn.setCellValueFactory(new PropertyValueFactory<>("malattieCardiovascolari"));}

正如你所看到的,有一列包含 "provincia"(英语中的省)。当我显示该表时,很明显,它打印了省的toString()字符串(包含在DecessiAnnuali(英语中的AnnualDeaths))。我只需要得到省的名称字段,而不是整个toString。

java hibernate javafx tableview tablecolumn
1个回答
1
投票

我假设你有一个 Provincia 类,而 getProvincia() 方法中 DecessiAnnuali 返回一个 Provincia 类。

既然如此,你首先需要固定你的列的类型。

@FXML
private TableColumn<DecessiAnnuali, Provincia> decessiProvinciaColumn;

然后你可以定义一个 cellFactory 省一栏,此外还有 cellValueFactory. (The cellValueFactory 决定 什么 要在单元格中显示的 cellFactory 决定 如何 以显示它)。)

decessiProvinciaColumn.setCellValueFactory(new PropertyValueFactory<>("provincia"));
decessiProvinciaColumn.setCellFactory(column -> new TableCell<DecessiAnnuali, Provincia>() {
    @Override
    protected void updateItem(Provincia provincia, boolean empty) {
        super.updateItem(provincia, empty);
        if (empty || provincia == null) {
            setText("");
        else {
            setText(provincia.getName());
        }
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.