2014-12-22 125 views
0

我想填充由SQL语句填充的列表组合框。填充从SQL陈述中填充的数组列表中的组合框

我尝试这样做:

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

我得到一个错误的cb.featureCombo.set下“featureCombo不能得到解决或不是场”,但featureCombo存在为:

@FXML 
private ObservableList<ComboBox> featureCombo; 

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

如果有人有更好的方法来做到这一点,我没有设置此方法。

+0

您正在combob列表oxes .... – chancea

+0

好的任何建议,以实现我希望实现的目标? @chancea – Anna

+0

我是一个java/js人,以前从未使用过javafx,但希望我的回答仍然有效 – chancea

回答

2

如果你希望一个名为featureCombo组合框,你将不得不宣布它作为一个组合框,而不是作为private ObservableList<ComboBox> featureCombo;这是制造ObservableList

喜欢的东西

@FXML 
ComboBox<String> featureCombo; 

然后在你的方法,你需要做的String列表填充组合框(您目前有组合框的列表)

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");    
    } 
} 
+0

@Anna我很高兴我为您解决了这个问题,但我希望我也更好地理解了'Objects'在OOP工作。这是必须具备的技能,才能提高编程技能。请花一些时间来了解我的评论等,不要只是不加思索地复制粘贴,这对你将来没有任何帮助。 – chancea

+0

但是你不应该使用原始类型:即你应该声明'ComboBox featureCombo'。根据问题中发布的代码,你是'@ FXML' - 注入这个,所以你不应该调用'new ComboBox()'。 –

+1

@James_D看起来更好吗?我只熟悉'Java'而不是'javafx' – chancea