【发布时间】:2020-05-11 08:28:25
【问题描述】:
如果该行不为空,我想添加一列。在这个中,我想放置具有不同 ImageView 的按钮,以便能够转到添加或查看页面。 我正在尝试根据我在 TableView 中的行的内容更改按钮的图标(如果 dateR (string) 为空) 我设法根据 dateR 值将其移动到某个页面,但我无法更改 imageView ... 谢谢
TableColumn<ModelTab4, Void> visualiserAjouter = new TableColumn<ModelTab4, Void>("Visualiser/Ajouter");
Callback<TableColumn<ModelTab4, Void>, TableCell<ModelTab4, Void>> cellFactory1 = (final TableColumn<ModelTab4, Void> param) -> {
final TableCell<ModelTab4, Void> cell = new TableCell<ModelTab4, Void>() {
private String dateR;
private final Button btn1 = new Button();
{
btn1.setOnAction(click -> {
try {
ModelTab4 analyse = getTableView().getItems().get(getIndex());
dateR = analyse.getDateR();
setDate(dateR);
idAnalyse = analyse.getNum1();
if (dateR!=null){
mainApp.goConsultResult(idPerso, idPatient, idAnalyse);
}
else {
mainApp.goAjoutResult(idPerso, idPatient, idAnalyse);
}
} catch (Exception e) {
e.printStackTrace();
}
});
}
public void setDate(String date) {
this.dateR = date;
}
public String getDate() {
return dateR;
}
public void updateItem(Void item, boolean empty) {
super.updateItem(item, empty);
if (empty) {
setGraphic(null);
}
else {
if (getDate()!=null){
setGraphic(btn1);
ImageView icone1 = new ImageView("consult.png");
icone1.setFitHeight(20);
icone1.setFitWidth(20);
btn1.setGraphic(icone1);
setStyle("-fx-alignment : CENTER;");
}
else if (getDate()==null){
setGraphic(btn1);
ImageView icone2 = new ImageView("ajout.png");
icone2.setFitHeight(20);
icone2.setFitWidth(20);
btn1.setGraphic(icone2);
setStyle("-fx-alignment : CENTER;");
}
}
}
};
return cell;
};
【问题讨论】:
-
欢迎使用 stackoverflow。参观并获得您的第一个徽章-stackoverflow.com/tour
-
由于单元格依赖于
dateR,您应该将visualiserAjouter设为TableColumn<ModelTab4, String>并使用cellValueFactory将单元格的值映射到analyse.dateRProperty()(或包装@如果您的模型类不支持 JavaFX 属性,则为 987654328@。然后在Cell实现中,item将只是您需要测试的值,因此它将立即在updateItem()方法中可用。
标签: java javafx tableview fxml