我正在尝试使用由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)下发生另一个错误;可能是因为同样的问题。
如果有人有更好的方法,我就不会采用这种方法。
答案 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");
}
}