我想将枚举值添加到 TableView (Javafx) 的 Combobox。 我在线尝试了多个代码,但是由于字符串到枚举转换问题,当尝试添加编辑事件时,唯一有效的代码停止工作。 这是我的代码:
this.tv_ListUsers_cl_Etat.setCellValueFactory(new PropertyValueFactory<>("etat"));
this.tv_ListUsers_cl_Etat.setCellFactory(TextFieldTableCell.<Utilisateur, Utilisateur.Etat>forTableColumn());
tv_ListUsers_cl_Etat.setOnEditCommit(
(CellEditEvent<Utilisateur, Utilisateur.Etat> t) -> {
if (t.getNewValue().equals("actif")) {
((Utilisateur) t.getTableView().getItems().get(
t.getTablePosition().getRow())).setEtat(User.Etat.Actif);
} else {
((Utilisateur) t.getTableView().getItems().get(
t.getTablePosition().getRow())).setEtat(User.Etat.Bloque);
}
});
其中 tv_ListUsers_cl_Etat 是我想要放置 Etat 值的列:
private TableColumn<Utilisateur, Utilisateur.Etat> tv_ListUsers_cl_Etat;
Utilisateur.Etat:
public enum Etat {
Actif,Bloque}
PS:此代码适用于 TextField 而不是 Combobox,即使这不再起作用。 这是出现的错误的屏幕截图:
PS:我这样修改了我的代码:
this.tv_ListUsers_cl_Etat.setCellValueFactory(new PropertyValueFactory<>("etat"));
Utilisateur User = new Utilisateur();
this.tv_ListUsers_cl_Etat.setCellFactory(ComboBoxTableCell.<Utilisateur,Utilisateur.Etat>forTableColumn(User.getEtat()));
tv_ListUsers_cl_Etat.setOnEditCommit(
(CellEditEvent<Utilisateur, Utilisateur.Etat> t) -> {
if (t.getNewValue().equals(User.Etat.Actif)) {
((Utilisateur) t.getTableView().getItems().get(
t.getTablePosition().getRow())).setEtat(User.Etat.Actif);
} else {
((Utilisateur) t.getTableView().getItems().get(
t.getTablePosition().getRow())).setEtat(User.Etat.Bloque);
}
});
我的问题是:如何使用编辑事件在 Tableview 的组合框中加载 Utilisateur.Etat 的两个值?
最佳答案
此代码有效:
Etat etat = Etat.Actif ;
this.tv_ListUsers_cl_Etat.setCellFactory(ComboBoxTableCell.<Utilisateur,Etat>forTableColumn(etat.values()));
tv_ListUsers_cl_Etat.setOnEditCommit(
(CellEditEvent<Utilisateur, Etat> t) -> {
if (t.getNewValue().equals(Etat.Actif)) {
((Utilisateur) t.getTableView().getItems().get(
t.getTablePosition().getRow())).setEtat(Etat.Actif);
} else {
((Utilisateur) t.getTableView().getItems().get(
t.getTablePosition().getRow())).setEtat(Etat.Bloque);
}
});
我添加了包含以下内容的Etat.java:
public enum Etat {
Actif,Bloque
}
关于java - 如何在 TableView Javafx 中将枚举值加载到组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35386066/