# Wie jComboBox auf default setzen?



## java777 (5. Mai 2010)

Hallo Leute,

ich möchte im verlauf meines programms den jComboBox auf default setzen.
Habe es mit:


```
object.a1_jComboBox.removeAllItems();
```

versucht.
Die Items werden zwar gelöscht, allerdings wird dadurch auch sogar mein combobox-actionlistener gekillt sodass der combobox-actionlistener net mehr reagiert.

viele grüße


----------



## Artorius (5. Mai 2010)

Hi!
Was genau heißt , du möchtest die ComboBox auf Default setzen? Möchtest du einen bestimmten Wert selektieren, die ComboBox mit bestimmten Werten füllen, oder ganz was anderes?

Grüße!


----------



## java777 (5. Mai 2010)

Hi Artorius,

also ich möchte die auflistung wieder entfernen, sozusagen den ComboBox entleeren.

vGrüße


----------



## 7hyrael (5. Mai 2010)

versuchs mal mit 


```
combobox.removeAllItems();

combobox.addItem( 0 , "text");
```

sollte so funktionieren, oder hab ich was falsch verstanden? 

mfg 7hyrael


----------



## java777 (5. Mai 2010)

bei combobox.addItem( 0 , "text"); wird ein fehler gemeldet und zwar folgendes:

The method addItem(Object) in the type JComboBox is not applicable for the arguments (int, String)

vGrüße


----------



## 7hyrael (5. Mai 2010)

java777 hat gesagt.:


> bei combobox.addItem( 0 , "text"); wird ein fehler gemeldet und zwar folgendes:
> 
> The method addItem(Object) in the type JComboBox is not applicable for the arguments (int, String)
> 
> vGrüße



a1_jComboBox.addItem( 0 , "text"); 

funktioniert nicht?

also ich hab das bei mir grade zufällig vorliegen und da geht es.

aber was würde dagegen sprechen, wenn du deiner combobox nachdem der action listener "gekillt" wurde du diesen einfach erneut zuweist?

ich weiß nu nicht was dein action listener macht, aber wenn du das ding eh leer räumst, also prinzipiell wieder auf anfangszustand bringst, sollte es doch egal sein, oder?


----------



## BloodyNewbie (5. Mai 2010)

du wirst doch irgendwie deine JComboBox "befüllt" haben.
Entweder in einer Schleife, oder beim Instanziieren.
(Bei dem Bespiel ist kunden ein Array vom Datentyp Kunde)


```
for (Kunde k : kunden) {

			combobox.addItem(k);

		}

// oder  bei der Instanzierung:

combobox = new JComboBox(kunden);
```

Die beste (mir bekannte Methode) ist, dass du die Objekte die du hinzugefügt hast, wieder einzelend entfernst: 
(Ich denke nicht, dass du ein eigenes ComboBoxModell benutzt?)

```
for (Kunde k : kunden){

                 combobox.removeItem(k);

      }
```


Edit:

a1_jComboBox.addItem( 0 , "text"); 
funktioniert bei mir auch nicht...da meine jdk-version mir auch nur addItem(Obejct o) anbietet. Da _(0, "text")_ aber ein int und ein String, und kein Obect ist, kann das auch nicht ohne compile-Fehler klappen, oder?


----------



## Artorius (5. Mai 2010)

Zum einen:
Die Methode addItem(int index, String str) existiert nicht für die JComboBox Komponente. Ich vermute mal, dass 7hyrael hier versucht, dass ganze auf einer Liste aufzurufen...

Zum anderen: Löschen kannst du mit der Methode die du auch schon nutzt.  Der ActionListener kann dann dann aber auch nicht mehr reagieren, weil nur ActionEvents abgefeuert werden, wenn die Selektion sich ändert. Es sei denn, du hast eine editierbare ComboBox. Dann gibts auch Events, falls du mit dem Editieren fertig bist..
Wenn du nach dem Leeren, wieder etwas in die ComboBox einfügst und dann die Seletion änderst, sollte dein ActionListener auch wieder reagieren...

Grüße!


----------



## java777 (5. Mai 2010)

Hi Artorius,

also nachdem leeren, fülle ich die combobox später wieder auf und setze den Index auf 0. Trotz dessen funktioniert es net 
viele grüße


----------



## Artorius (5. Mai 2010)

Dann würde ich sagen, machst du was falsch 
Vergleiche mal hiermit:

```
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * TestFrame.java
 *
 * Created on 05.05.2010, 18:09:27
 */

package javaapplication5;

/**
 *
 * @author jw
 */
public class TestFrame extends javax.swing.JFrame {

    /** Creates new form TestFrame */

    public TestFrame() {
        initComponents();
        fillBox();

    }
    private void fillBox(){
        for(int i=0; i < 5; i++){
            jComboBox1.addItem(i);
        }
    }


    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jComboBox1 = new javax.swing.JComboBox();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jComboBox1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jComboBox1ActionPerformed(evt);
            }
        });
        getContentPane().add(jComboBox1, java.awt.BorderLayout.PAGE_START);

        jButton1.setText("leeren");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton1, java.awt.BorderLayout.LINE_START);

        jButton2.setText("neu Füllen");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton2, java.awt.BorderLayout.PAGE_END);

        jTextArea1.setColumns(20);
        jTextArea1.setRows(5);
        jScrollPane1.setViewportView(jTextArea1);

        getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-579)/2, (screenSize.height-363)/2, 579, 363);
    }// </editor-fold>

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
       jComboBox1.removeAllItems();
    }

    private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {
        jTextArea1.append("ComboBox geklicked. Neuer selektierter Index = "+jComboBox1.getSelectedIndex()+"\n");
    }

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
        fillBox();
        jComboBox1.setSelectedIndex(1);
    }

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new TestFrame().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextArea1;
    // End of variables declaration

}
```

Gruß!


----------

