0

DBから2つのフィールドを含む結果セットを取得したいと思います。

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

次に、comboBox(アイテムとして)に「name_prov」というフィールドを表示します。ただし、このアイテムの値としてID(PRIMARY KEY)である「id_prov」も必要です。これは、コンボボックスを使用するだけで、(この場合はプロバイダーの)名前をそのIDに関連付けるために使用されます。

これは、Imが現在使用している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  );
    }

とにかく私はこれを達成することができますか?

4

2 に答える 2

6

nameまず、あなたとの両方を保持するPOJOを作成しますid

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.
            }
    });
于 2013-03-11T06:19:08.203 に答える
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であることに注意してください

于 2015-11-26T06:45:08.130 に答える