5 Stimmen

Wie kann ich Datenbank-ID als Combobox Index in Java hinzufügen?

Ich möchte Combobox Index aus Datenbank-ID hinzufügen.

 public static void selectCompany(javax.swing.JComboBox cmbCategory ){
    cmbCategory.removeAllItems();
    String sql="SELECT * FROM company_details";
    try{
        Connection conn=dbConnection();
        PreparedStatement pstmt=conn.prepareStatement(sql);
        ResultSet rs=pstmt.executeQuery(sql);
        while(rs.next()){
            int id=rs.getInt("company_id");
            String category=rs.getString("company_name");
            cmbCategory.addItem(id);
            cmbCategory.addItem(category);
        }
    }catch(Exception e){
        JOptionPane.showMessageDialog(null, e);
    }
}

cmbCategory ist ein Combobox-Objekt. Ich möchte id als Combobox Index und Combobox-Liste Anzeige als Kategorie-Name zu dispaly. Datenbank ist mysql.

7voto

Diego Agulló Punkte 8980

Sie können der ComboBox Objekte hinzufügen, nicht nur Zeichenketten, so etwas wie dies sollte den Trick tun:

    while(rs.next()){
        int id=rs.getInt("company_id");
        String category=rs.getString("company_name");
        Object[] itemData = new Object[] {id, category};
        cmbCategory.addItem(itemData);
    }

Und wie Harry Joy schon sagte, können Sie swing mitteilen, wie dieses Element gerendert werden soll, indem Sie eine ListCellRenderer :

class MyListRenderer extends JLabel implements ListCellRenderer {

    @Override
    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
        Object[] itemData = (Object[])value;
        setText((String)itemData[1]);

        return this;
    }
}

Diese können Sie später der JComboBox zuweisen:

cmbCategory.setRenderer(new MyListRenderer());

Auf diese Weise haben Sie den offensichtlichen Vorteil, dass Sie sowohl die ID als auch den Kategorienamen in einem einzigen Objekt haben. Wenn der Benutzer also einen Eintrag in der Combobox auswählt, können Sie auf alle Eigenschaften dieses Objekts (ID und Name!) zugreifen.

1voto

KV Prajapati Punkte 91877

Wenn Sie company_id als combobox Artikelindex, dann ist meine Antwort, dass man den Artikelindex nicht einstellen kann. Wenn Sie sowohl die ID als auch die Kategorie anzeigen möchten, dann verknüpfen Sie die ID und den Firmennamen.

cmbCategory.addItem(id + " " + category);

1voto

camickr Punkte 315810

Wenn Sie einen benutzerdefinierten Renderer verwenden, verlieren Sie die Möglichkeit, auf die Combobox-Elemente über die Tastatur zuzugreifen, um das erste Zeichen des Elements einzugeben. Dies liegt daran, dass die Suche des Combobox-Modells die toString()-Methode jedes Elements verwendet, um das angeforderte Element zu finden. Die toString()-Implementierung eines Arrays ist in diesem Fall nicht sinnvoll.

Eine andere Lösung besteht darin, ein benutzerdefiniertes Objekt zu erstellen und die Methode toString() des Objekts zu überschreiben, wie in diesem Beispiel gezeigt: Wie man das Map-Element als Text einer JComboBox verwendet

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X