java - 如何在 TableView Javafx 中将枚举值加载到组合框

标签 java javafx combobox javafx-2 javafx-8

我想将枚举值添加到 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,即使这不再起作用。 这是出现的错误的屏幕截图: enter image description here

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);

                }

            });

现在我明白了: enter image description here

我的问题是:如何使用编辑事件在 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/

相关文章:

java - 对于没有无参数构造函数的类,应该如何扩展 Number?

JavaFX TextField 转 Int

Javafx 扩展 ToggleButton

Javafx:TableView根据列值更改行颜色

java - 在 Java 中调用和接收 Python 脚本的输出?

java - 读取具有多个元素的 JSON 数组并将值附加到 JsonArray/JAVA 中

java - Apache 兴趣点: "Cannot resolve symbol"

带有预先输入和分层项目的 Javascript 组合框

c++ - 如何创建 Qt 组合框

javascript - 当表单控件选项具有多个参数时,如何填充组合框中的所选项目?