从填充自SQL语句的数组列表中填充组合框

时间:2014-12-22 18:27:46

标签: eclipse combobox javafx

我正在尝试使用由SQL语句填充的列表填充ComboBox。

我试过了:

public void buildData(){        
  ObservableList<ComboBox>  data = FXCollections.observableArrayList();

  Connection conn = db.makeConnection();
    try{      
        String SQL = "Select Feature from FeaturesTable Order By Feature";            
        ResultSet rs = conn.createStatement().executeQuery(SQL);  
        while(rs.next()){
            ComboBox cb = new ComboBox();
            cb.featureCombo.set(rs.getString("Feature"));                       

            featureCombo.add(cb);                  
        }
        featureCombo.setItems(data);
    }
    catch(Exception e){
          e.printStackTrace();
          System.out.println("Error on Building Data");            
    }
}

我在“featureCombo无法解析或不是字段”的cb.featureCombo.set下收到错误,但featureCombo存在:

@FXML
private ObservableList<ComboBox> featureCombo;

然后在featureCombo.setItems(data)下发生另一个错误;可能是因为同样的问题。

如果有人有更好的方法,我就不会采用这种方法。

1 个答案:

答案 0 :(得分:2)

如果你想要一个名为featureCombo的ComboBox,你将不得不将它声明为一个ComboBox,而不是private ObservableList<ComboBox> featureCombo;,它正在制作一个ObservableList

这样的东西
@FXML
ComboBox<String> featureCombo;

然后在你的方法中,你需要创建一个String列表来填充ComboBox(你当前有一个ComboBox列表)

public void buildData(){        
  ObservableList<String>  data = FXCollections.observableArrayList(); //List of String

  Connection conn = db.makeConnection();
    try{      
        String SQL = "Select Feature from FeaturesTable Order By Feature";            
        ResultSet rs = conn.createStatement().executeQuery(SQL);  
        while(rs.next()){
            data.add(rs.getString("Feature")); //add the String to the list                                     
        }
        featureCombo.setItems(data); //Set the list of String as the data for your combo box
    }
    catch(Exception e){
          e.printStackTrace();
          System.out.println("Error on Building Data");            
    }
}