2014-12-22 171 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