Erste Schritte JComboBox Einträge auf Duplikat prüfen

Diskutiere JComboBox Einträge auf Duplikat prüfen im Java Basics - Anfänger-Themen Bereich.
C

Creepaz

Moin,

Ich habe eine Combobox, und füge so bestimmte Werte ein:

Java:
stmt = con.prepareStatement("select header from supports");
  stmt.executeQuery();
  rs = stmt.getResultSet();
  
  while(rs.next()) {
   AcceptSupport.dropDownFilterSupports.addItem(rs.getString("header"));
  }
  
  con.close();
  stmt.close();
header ist in diesem Fall die Überschrift, nun folgendes Problem: Kommt 2x die gleich Überschrift vor, wird 2x die Überschrift in die Combobox eingefügt. Kann ich irgendwie abfragen ob ein bestimmtes Item bereits in der Combobox ist?

Vielen Dank
 
O

Oneixee5

Eine Möglichkeit ist, aus dem SQL nur eindeutige Überschriften zu holen:
SQL:
stmt = con.prepareStatement("select distinct header from supports");
 
O

Oneixee5

Du kannst auch ein Model mit der entsprechenden Funktionalität verwenden:
Java:
import java.util.Vector;
import javax.swing.MutableComboBoxModel;
import javax.swing.event.ListDataListener;

public class HighscoreMutableModel implements MutableComboBoxModel
{
    // Das Attribut eintraege stellt unsere Listelemente dar
    Vector eintraege = new Vector();
    // Index für selektierten Eintrag
    int index=-1;

     /* Hier geben wir zurück, was als selektierter Eintrag
        in der JComboBox angezeigt werden soll */
    public Object getSelectedItem()
    {
        if(index >= 0)
        {
            return ((Highscore)eintraege.elementAt(index)).getHighscoreEintrag();
        }
        else
        {
            return "";
        }
    }

    // Diese Funktion wird beim Selektieren eines Eintrages aufgerufen
    // Dort ermitteln wir den Index für das ausgewählte Element
    // anItem ist der in der JComoboBox ausgewählte Eintrag
    public void setSelectedItem(Object anItem)
    {
        for(int i = 0; i< eintraege.size(); i++)
        {
            if(((Highscore)eintraege.elementAt(i)).
                getHighscoreEintrag().equals(anItem))
            {
                index = i;
                break;
            }
        }
    }

    // Hier liefern wir die Anzahl der Elemente in unserer Liste zurück
    public int getSize()
    {
        return eintraege.size();
    }

    // Hier wird ein Element an einer bestimmten Stelle zurückgegeben
    public Object getElementAt(int index)
    {
        return ((Highscore)eintraege.elementAt(index)).getHighscoreEintrag();
    }


    // Hier fügen wir unserer Liste ein Highscore-Objekt hinzu
    // Wir ordnen es so ein, dass es in die Rangfolge passt
    public void addElement(Object obj)
    {
        if(!eintraege.contains(obj))
        {
            int i=0;

            while(i<eintraege.size()&&((Highscore)eintraege.get(i)).getRang()
                <=((Highscore)obj).getRang()){
                    i++;
           }

            eintraege.add(i, obj);
            if(index==-1)index=0;
        }
    }

    // Hier entfernen wir ein Objekt aus der Liste
    public void removeElement(Object obj)
    {
        if(eintraege.contains(obj))
        {
            eintraege.remove(obj);
        }
    }

    // Hier fügen wir ein Element an einer bestimmten Position ein
    public void insertElementAt(Object obj, int index)
    {
        eintraege.add(index, obj);
    }

    // Hier entfernen wir ein Element aus der Liste mit dem übergebenem Index
    public void removeElementAt(int index)
    {
        if(eintraege.size()> index)
        {
            eintraege.removeElementAt(index);
        }
    }

    // Die beiden folgenden Methoden berücksichtigen wir hier nicht
    public void addListDataListener(ListDataListener l)
    {
    }

    public void removeListDataListener(ListDataListener l)
    {
    }
}
Verwendung:
Java:
JComboBox jComboBox = new JComboBox(new HighscoreMutableModel());
//Highscore-Objekte werden in die JComboBox eingetragen
jComboBox.addItem(new Highscore("A", 3));
jComboBox.addItem(new Highscore("B", 1));
jComboBox.addItem(new Highscore("X", 2));
Wenn du weißt was Generics sind, kannst du das Model auch generischer aufbauen, so das es auf mehrere Comboboxen anwendbar ist.
 
C

Creepaz

Eine Möglichkeit ist, aus dem SQL nur eindeutige Überschriften zu holen:
SQL:
stmt = con.prepareStatement("select distinct header from supports");
Danke für deine Antworten. Habs jetzt mit deiner "simplen" und einfachen Lösung gemacht, funktioniert wunderbar. Danke dir.
 
O

Oneixee5

Du kannst auch gleich noch sortieren, so lassen sich Listen schneller überblicken.
SQL:
select distinct header from supports order by header
 
Thema: 

JComboBox Einträge auf Duplikat prüfen

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben