2013-03-11 54 views
0

我想從我的數據庫中獲得2個字段的結果集。Java Combobox,從數據庫管理2個字段

rs=Con.sqlQueryTable("Select id_prov, name_prov from prov"); 

然後我想在comboBox(作爲項目)顯示名爲「name_prov」的字段。但我也想讓我的「id_prov」這個ID(PRIMARY KEY)作爲這個項目的值。這樣做的目的只是通過使用組合框將名稱(本例中的提供者的名稱)與其ID相關聯。

這是我正在使用的JComboBox事件FocusGained的代碼。

try { 
     //CBProv is the Combobox 
     CBProv.removeAllItems(); 


     rs=Con.sqlQueryTable("Select id_prov, name_prov from prov"); 

     while(rs.next()) 
     { 

      CBProvedores.addItem(rs.getString("name_prov")); 
      //Here should be the Value related to the item I am creating 



     } 
    } catch (Exception e) { 
     JOptionPane.showMessageDialog(this, "Error" + e ); 
    } 

有反正我可以做到這一點嗎?

回答

6

首先創建一個POJO,它將同時包含您的nameid

public class ComboItem { 
    private String id; 
    private String name; 

    public ComboItem(String id, String name) { 
     this.id = id; 
     this.name = name; 
    } 

    // Add the getter and setter as you want. 

    // This will be used internally by JComboBox as the label to be displayed. 
    @Override 
    public String toString() { 
     return name; 
    } 
} 

然後用這個POJO物件放入您的JComboBox

try { 
     //CBProv is the Combobox 
     CBProv.removeAllItems(); 

     rs=Con.sqlQueryTable("Select id_prov, name_prov from prov"); 

     while(rs.next()) 
     {     
      String id = rs.getString("id_prov"); // Get the Id 
      String name = rs.getString("name_prov"); // Get the Name 

      ComboItem comboItem = new ComboItem(id, name); // Create a new ComboItem 
      CBProv.addItem(comboItem); // Put it into the ComboBox 

     } 
    } catch (Exception e) { 
     JOptionPane.showMessageDialog(this, "Error" + e ); 
    } 

然後終於得到選擇的值,你可以這樣做: -

CBProv.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       ComboItem comboItem = (ComboItem) CBProv.getSelectedItem(); 
       // comboItem.getId(), comboItem.getName() - Use as you wish. 
      } 
    }); 
+0

我只是想告訴你先生......你真了不起! – Carlos 2013-03-12 05:42:28

0

您好我也還是一個新手,Java和JavaFX。這是我在javafx中做的,它爲我工作希望你可以在java中解決它。

private void fillProviders() 
    { 
    List<String> providerList = new ArrayList<String>(); 

    try 
    { 
     String Sql = "select * from prov "; 
     pat= conn.prepareStatement(Sql); 
     rs=pat.executeQuery(); 

     while (rs.next()) 
     { 
      providerList.add(rs.getString("id_prov")+" "+ rs.getString("name_prov")); 
     } 

     ObservableList<String> provider = FXCollections.observableArrayList(providerList); 
      bankName.setItems(provider); 
    } 

    catch(Exception e) 
    { 
     JOptionPane.showMessageDialog(null, e); 
    }   
} 

希望它適合你。請注意,我的組合框名稱是bankName