2016-02-13 78 views
0

我想將一個枚舉值添加到組合框到一個TableView(Javafx)。 我在網上嘗試了多個代碼,但只有一個工作時試圖添加一個編輯事件,由於字符串到Enum轉換問題停止工作。 這是我的代碼:如何將枚舉值加載到TableView中的Combobox Javafx

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就是我想要把行政法院的值的列:

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

我的問題是:如何使用Edit Event在Tableview的Combobox中加載Utilisateur.Etat的兩個值?

回答

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 
    } 
相關問題