2016-07-05 8 views
0

Ich versuche, eine Combobox für jeden Datensatz, der aus der Datenbank abgerufen wird, aber leider kann ich keine Combobox in der erwarteten Spalte.Kann ComboboxTableCell nicht in Javafx App erhalten

Hier Code für meine Modellklasse:

public class Employee { 
    private final int id; 
    private final SimpleStringProperty ename; 
    private final SimpleStringProperty ecnic; 
    private final SimpleDoubleProperty ebalance; 
    private final SimpleDoubleProperty etotalpaid; 
    private SimpleStringProperty estatus; 
    public Employee(int id, String ename, String ecnic, Double ebalance, 
      Double etotalpaid, String estatus) { 
     super(); 
     this.id = id; 
     this.ename = new SimpleStringProperty(ename); 
     this.ecnic = new SimpleStringProperty(ecnic); 
     this.ebalance = new SimpleDoubleProperty(ebalance); 
     this.etotalpaid = new SimpleDoubleProperty(etotalpaid); 
     this.estatus = new SimpleStringProperty(estatus); 
    } 
    public String getEstatusproperty() { 
     return estatus.get(); 
    } 
    public String getEstatus() { 
     return estatus.get(); 
    } 
    public void setEstatus(String estatus) { 
     this.estatus = new SimpleStringProperty(estatus); 
    } 
    public int getId() { 
     return id; 
    } 
    public String getEname() { 
     return ename.get(); 
    } 
    public String getEcnic() { 
     return ecnic.get(); 
    } 
    public Double getEbalance() { 
     return ebalance.get(); 
    } 
    public Double getEtotalpaid() { 
     return etotalpaid.get(); 
    } 
} 

Hier ist der Code für meine Methode, die ich Daten aus der Datenbank zu holen rufen ..

public void attendence() throws SQLException{ 
     employeelist = FXCollections.observableArrayList(); 
     ename.setCellValueFactory(new PropertyValueFactory<Employee,String>("ename")); 
     ecnic.setCellValueFactory(new PropertyValueFactory<Employee,String>("ecnic")); 
     ebalance.setCellValueFactory(new PropertyValueFactory<Employee,Double>("ebalance")); 
     etotalpaid.setCellValueFactory(new PropertyValueFactory<Employee,Double>("etotalpaid")); 
     estatus.setCellValueFactory(new PropertyValueFactory<Employee,String>("estatus")); 
     estatus.setCellFactory(ComboBoxTableCell.forTableColumn(new DefaultStringConverter(), attendenceoptions)); 
     estatus.setOnEditCommit(
       new EventHandler<CellEditEvent<Employee, String>>() { 
        @Override 
        public void handle(CellEditEvent<Employee, String> t) { 
         ((Employee) t.getTableView().getItems().get(t.getTablePosition().getRow())).setEstatus(t.getNewValue()); 
        }; 
     }); 
     estatus.setEditable(true); 
     stmt = conn.createStatement(); 
     sql = "select * from employe"; 
     rs = stmt.executeQuery(sql); 
     while(rs.next()){ 
      employeelist.add(new Employee(rs.getInt(1),rs.getString(2),rs.getString(3),rs.getDouble(5),rs.getDouble(6),"Present")); 
      employeetable.setItems(employeelist); 
     } 
     stmt.close(); 
     rs.close(); 
    } 
} 
+0

Sind sowohl die Tabellenansicht als auch die Tabellenspalte editierbar? – Itai

+0

Beachten Sie, dass die ComboBox nur angezeigt wird, wenn Sie den Wert bearbeiten. –

+0

Meine Tabelle wurde nicht auf editierbar gesetzt. Wie ich es editierbar eingestellt habe, funktioniert es! –

Antwort

0

habe dieses Bild in Verfahren zur Beseitigung des Problems.

employeetable.setEditable(true);