JComboBox - Scrollen mit Pfeiltasten

Anleitungen, Beispiele und Hilfestellungen zu NetBeans

Moderator: wegus

Antworten
Thomas67
Beiträge: 57
Registriert: 12.09.2010, 19:17

JComboBox - Scrollen mit Pfeiltasten

Beitrag von Thomas67 » 01.05.2011, 21:22

Hallo

Schwer zu beschreiben, aber vielleicht hat jemand eine Idee, wo ich suchen könnte.

Ich habe in einer Dialogbox eine jcombobox mit aufgenommen.
Normalerweise kann ich mich mit Pfeil up/down beliebig durch die Comboeinträge rauf und runterbewegen.
Aktuell funktioniert dies nicht. Mehr als ca dreimal oder viermal gehts nicht. Cursor friert allerdings nicht ein, rauf und runter geht weiterhin, jedoch nicht mehr als dreimal oder viermal in eine Richtung
Auch springt die Auswahl dann nicht von Eintrag zu Eintrag, sondern immer ein paar Einträge weiter (ohne daß ich da eine Regelmäßigkeit sehe)

Die jcombo hab ich zuerst mit removeallitems geleert und dann die einzelnen Einträge mit additem eingetragen
Die Einträge sind Stringe aus einer sortierten Arraylist.

Hilft das? Ich will ungern den ganzen Code hier einfügen, vermute sowieso, daß der Fehler eher in irgendeiner von Netbeans erstellten und von mir vielleicht veränderten Propertyeinstellung liegt.

Hat jemand einen Tip, wo ich speziell suchen kann?

Gruß
Thomas

Benutzeravatar
nigjo
Beiträge: 607
Registriert: 08.09.2009, 09:43
Wohnort: Aachen
Kontaktdaten:

Re: JComboBox - Scrollen mit Pfeiltasten

Beitrag von nigjo » 01.05.2011, 21:29

Hi

Hast du einen eigenes Model oder einen SelectionListener implementiert?

Jens
Man sollte seine Werkzeuge kennen. Ansonsten haut man sich mit dem Hammer nur auf die Finger.

--
NetBeans Certified Engineer - Java Getriebe

Thomas67
Beiträge: 57
Registriert: 12.09.2010, 19:17

Re: JComboBox - Scrollen mit Pfeiltasten

Beitrag von Thomas67 » 01.05.2011, 22:02

Servus
hab nix speziell implementiert, sondern eigentlich so übernommen, wie von Netbeans vorgeschlagen

Jedoch stell ich gerade fest, daß die Pfeil-Down Methode immer dann versagt, wenn der Eintrag in der Zeile darunter den gleichen String zeigt,
bei Pfeil rauf springt er auf die erste Zeile von gleichen Zeilen.

Ich weiß, das macht keinen Sinn, gleiche Einträge anzuzeigen, allerdings ist meine Kurzinfo, die ich im Dropdown zeige nicht eindeutig.
Nach Selektion des Eintrages zeige ich deshalb in einer Textarea genauere Info dazu.

Liegts vielleicht daran, daß manche Listeinträge gleich sind?

Thomas

Benutzeravatar
nigjo
Beiträge: 607
Registriert: 08.09.2009, 09:43
Wohnort: Aachen
Kontaktdaten:

Re: JComboBox - Scrollen mit Pfeiltasten

Beitrag von nigjo » 02.05.2011, 07:58

Thomas67 hat geschrieben:Liegts vielleicht daran, daß manche Listeinträge gleich sind?
Ja. Intern wird die equals Methode verwendet um den index der Auswahl festzustellen. Bei gleichen Strings funktioniert das natürlich nicht.

Du kannst aber mit einer eigenen Klasse dieses Problem recht einfach umschiffen

Code: Alles auswählen

class MyComboboxItem
{
  private static int idCounter = 0;
  private final int id;
  private final String displayName;

  public MyComboboxItem(String displayName)
  {
    this.id = ++idCounter;
    this.displayName = displayName;
  }

  public MyComboboxItem(String displayName, int id)
  {
    this.id = id;
    this.displayName = displayName;
  }

  public int getId()
  {
    return id;
  }

  @Override
  public String toString()
  {
    return displayName;
  }

  @Override
  public boolean equals(Object obj)
  {
    if(obj == this)
      return true;
    if(!(obj instanceof MyComboboxItem))
      return false;
    return ((MyComboboxItem)obj).id == this.id;
  }

  @Override
  public int hashCode()
  {
    int hash = 7;
    hash = 97 * hash + this.id;
    hash =
        97 * hash + (this.displayName != null ? this.displayName.hashCode() : 0);
    return hash;
  }

}
(Die hashCode Methode ist automatisch von NetBeans generiert und nicht sooo entscheidend)

Die Instanzen davon sind auch bei gleichem Stringtext unterschiedlich und sollten mit der Combobox sauber funktionieren.

In diesem Post: http://netbeans-forum.de/viewtopic.php?p=21312#p21312 ist auch nochmal ein Beispiel für so eine Klasse

Gruß
Jens
Man sollte seine Werkzeuge kennen. Ansonsten haut man sich mit dem Hammer nur auf die Finger.

--
NetBeans Certified Engineer - Java Getriebe

Thomas67
Beiträge: 57
Registriert: 12.09.2010, 19:17

Re: JComboBox - Scrollen mit Pfeiltasten

Beitrag von Thomas67 » 02.05.2011, 21:26

Danke!
Werd ich probieren...

Gruß
Thomas

Antworten