Zum Inhalt springen

Recht seltsame JList


Azubi1000

Empfohlene Beiträge

Hallo Zusammen!

Ich habe eine JList mit Automarken und wenn ich irgendeinen Wert mit der Maus

direkt anwähle, wird aufgrund des valuechanged()-Ereignises der Inhalt der Auswahl (mit System.out.println(jList1.getSelectedValue()); zum testen! )

ZWEIMAL ausgegeben.

Wenn ich allerdings mit den Pfeiltasten navigiere, gibt er den Wert (z.B. BMW)

nur einmal aus?

Wer weiss Rat?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

In der zugehörigen UIKlasse zur JList (javax.swing.plaf.basic.BasicListUI) gibt es eine Klasse MouseInputHandler, die das Interface MouseInputListener implementiert. In der Methode mousePressed() wird das Flag ValueIsAdjusting der zugehörigen JList auf true gesetzt. Weiterhin wird hier geprüft, ob Strg oder Shift gedrückt ist. In der Methode mouseReleased() wird das Flag wieder auf false zurückgesetzt.

Wenn also die linke Maustaste gedrückt wird, wird ein

ListSelectionEvent mit ValueIsAdjusting = true gefeuert und beim Loslassen der linken Maustaste ein weiteres ListSelectionEvent mit ValueIsAdjusting = false.

Abhilfe:

Am Anfang des Listenerbereichs, also vor deiner stdout Ausgabe folgende Zeile.

if (evt.getValueIsAdjusting()) return;

Gruß Jaraz

Lösung übrigens aus dclj Newsgroup "geklaut".

Aber ich hatte das Problem auch schon mal.

Link zu diesem Kommentar
Auf anderen Seiten teilen

bei mir hat folgendes bei einem ähnlichem problem geholfen:

du fragst ja sicher ab:

if (evt.getSource() == list_object)

{

das, was er dann machen soll;

evt.setSource = null;

}

Habe also "evt.setSource = null;" eingefügt. dann führt er "das, was er dann machen soll;" nur einmal aus.

alternativ kann man auch eine beliebig andere variable abfragen (am besten ein "boolean FLAG") dieses FLAG setzt man dann am ende um.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...