Frage

Ich habe einen ActionListener an ein JCombobox (unverdient). Sobald ein Element aus dem JCombobox ausgewählt ist, muss ich die nächste Taste im Rahmen sichtbar machen.

Das Skelett des Codes sieht so aus:

public void actionPerformed(ActionEvent evt)
{
    if(evt.getSource()==jComboBox){
        if(jComboBox.getSelectedIndex()==-1)
            //Display an alert message

        else{
            nextButton.setVisible(true);
        //Do other actions
        }
    }
}

Es wird festgestellt, dass ActionPerformed nur dann aufgerufen wird, wenn die zweiten, dritten, vierten (usw.) Elemente ausgewählt werden. Actionperformed wird jedoch nicht aufgerufen, wenn das erste Element zum ersten Mal ausgewählt wird. Wenn das erste Element nach Auswahl anderer Elemente ausgewählt wird, wird Actioperformed aufgerufen und der Code funktioniert einwandfrei.

Dieser Fehler erscheint in einigen Systemen und nicht auf anderen Systemen. Jede diesbezüglich Hilfe wäre geschätzt.

Vielen Dank im Voraus!!

War es hilfreich?

Lösung

Dies ist das normale Verhalten. Der ActionEvent wird nicht abgefeuert, wenn Sie denselben Artikel erneut auswählen. Wenn Sie möchten, dass das Ereignis beim Erstellen des Kombinationsfelds abgefeuert wird, sollte Ihr Code so aussehen wie:

JComboBox comboBox = new JComboBox(...);
comboBox.setSelectedIndex(-1); // remove automatic selection of first item
comboBox.addActionListener(...);
comboBox.setSelectedIndex(0);

oder

JComboBox comboBox = new JComboBox();
comboBox.addActionListener(...);
comboBox.addItem(...);
comboBox.addItem(...);

Andere Tipps

Es scheint, als ob Sie der erste Zustand ein wenig falsch sind.

Wenn Sie einen bestimmten Code ausführen möchten, wenn sich kein Element in Ihrem jCombobox befindet, sollten Sie die Inhaltsgröße überprüfen: jComboBox.getItemCount()==0 Anstatt von jComboBox.getSelectedIndex()==-1, weil ausgewählter Index von verschiedenen Bedingungen abhängen kann, während GetItemCount () nur 0 ist, wenn die Kombinationsbox leer ist :-)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top