我有一个问题:我需要创建一个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。
我假设你有一个 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());
}
}
});