我想将一个枚举值添加到Combobox到TableView(Javafx)。 我在线尝试了多个代码,但是当尝试添加由于字符串到Enum转换问题的Edit事件时,唯一有效的代码停止工作。 这是我的代码:
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中的Combobox中加载Utilisateur.Etat的两个值?
答案 0 :(得分:1)
此代码有效:
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
}