Azubi1000 Geschrieben 7. Februar 2003 Geschrieben 7. Februar 2003 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? Zitieren
Jaraz Geschrieben 7. Februar 2003 Geschrieben 7. Februar 2003 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. Zitieren
Azubi1000 Geschrieben 8. Februar 2003 Autor Geschrieben 8. Februar 2003 Gleich mal auf den JBuilder stürzen. Man sieht wieder mal wie umfangreich selbst einfache Dinge sind. Zitieren
chepro Geschrieben 13. Februar 2003 Geschrieben 13. Februar 2003 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. Zitieren
Jaraz Geschrieben 13. Februar 2003 Geschrieben 13. Februar 2003 Hi, warum sollte man ein eigenes Flag implementieren, wenn es schon ein eingebautes gibt? Siehe Lösung oben. Gruß Jaraz Zitieren
Empfohlene Beiträge
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.