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?
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.
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.
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.
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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden