JList ListSelectionEvent entfernen?

DoppelFabi

Aktives Mitglied
Hey,

Ich schreibe mir gerade ein Programm was mir eine Liste von Kontakten anzeigt und wenn ich drauf klicke kommt !bis jetzt! nur eine Nachricht mit der ID und dem Namen. Da ich habe auch ein Hauptmenu habe und ich hin und her switchen kann, wird diese Klasse natürlich öfter aufgerufen.
Nun ist mein Problem, ich bekomme zwar hin das die Elemente sich nicht verdoppeln in der Liste und auch keine Fehler kommen aber ich bekomme anstatt 2 Nachrichten standard z.b 4 wenn ich diese Klasse 2x öffne. Könnte man irgendwie das ListSelectionEvent entfernen beim switchen und beim starten direkt wieder hinzufügen?

Code:
Java:
package com.hacking.programm.source;

import java.awt.Font;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.ScrollPaneConstants;
import javax.swing.SwingUtilities;
import javax.swing.border.EmptyBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import com.hacking.programm.utils.Manager;

public class InstagramNormal {

    static JFrame InstagramNormal;

    static JButton Back;

    static JList<Element> list = new JList<>();
    static DefaultListModel<Element> model = new DefaultListModel<>();

    JSplitPane pane = new JSplitPane();

    public InstagramNormal() {

        Manager.createOtherFrames("Hacking-Programm - Instagram Normal", "/com/hacking/programm/files/Icon.jpg", 750,
                800, JFrame.EXIT_ON_CLOSE, false, true, false, true);
        Manager.createPanel(InstagramNormal);
        InstagramNormal = Manager.otherframes;

        Manager.createExitButton(InstagramNormal);
        Manager.createBackgroundButton(InstagramNormal);
        Manager.createReloadButton(InstagramNormal);
        Manager.createInstagramButton(InstagramNormal);
        Manager.createYouTubeButton(InstagramNormal);
        Manager.createBackButton(InstagramNormal);

        Manager.createLabel("Instagram", new Font("Mad Hacker", 0, 75), 75, -80, 650, 210, InstagramNormal);

        list.setModel(model);
        list.setFixedCellWidth(170);
        list.setBorder(new EmptyBorder(0, 0, 0, 575));

        model.addElement(new Element("das das", 1));
        model.addElement(new Element("dfdffd", 2));
        model.addElement(new Element("grgtgttgr", 3));
        model.addElement(new Element("rethrehtthr", 4));

        Manager.panel.add(list);

        list.getSelectionModel().addListSelectionListener(new ListSelectionListener() {

            @Override
            public void valueChanged(ListSelectionEvent ls) {
                Element e = list.getSelectedValue();
                System.out.println(e.getID() + "   " + e.getName());
            }
        });

        JScrollPane scrollPane = new JScrollPane(list);
        scrollPane.setBounds(1, 100, 200, 600);
        scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

        InstagramNormal.add(scrollPane);
        Manager.reloadPanel(InstagramNormal, Manager.panel);
        SwingUtilities.updateComponentTreeUI(InstagramNormal);
    }

    public static class Element {
        String name;
        int id;

        public Element(String name, int id) {
            this.name = name;
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getID() {
            return id;
        }

        public void setID(int id) {
            this.id = id;
        }

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

    public static void closeInstagramNormal() {
        model.removeAllElements();
        InstagramNormal.dispose();
        Manager.frame.setVisible(true);
    }

}

Die closeInstagramNormal wird beim ActionListener ausgeführt wenn man auf mein erstellten Button Back drückt.
 

DoppelFabi

Aktives Mitglied
Das sind noch mehrere Klassen und du siehst ja diese Zeilen:

Java:
        list.getSelectionModel().addListSelectionListener(new ListSelectionListener() {

            @Override
            public void valueChanged(ListSelectionEvent ls) {
                Element e = list.getSelectedValue();
                System.out.println(e.getID() + "   " + e.getName());
            }
        });

Wenn ich ein Element in der Liste anklicke kommen standard mäßig 2 ausgaben aber wenn ich auf Back und wieder auf diese Kategorie gehe und ein Element anklicke kommen schon 4 ausgaben sprich es verdoppelt sich beim Switchen
 

DoppelFabi

Aktives Mitglied
Komplett alle? Dann kann ich aber nichtmehr auf die closeInstagramNormal von anderen Klassen drauf zugreifen und ich kann in closeInstagram keine Variablen von der Klasse verwenden. Dann bringt das ja auch nichts :/
 

DoppelFabi

Aktives Mitglied
Okay ich habe die meisten Sachen die ich nicht in anderen Klassen verwende zu non static gemacht nun bekomme ich immer 2 ausgaben aber nun bekomme ich diesen Fehler:

Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at com.hacking.programm.source.InstagramNormal$1.valueChanged(InstagramNormal.java:62)
    at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
    at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
    at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
    at javax.swing.DefaultListSelectionModel.removeIndexInterval(Unknown Source)
    at javax.swing.plaf.basic.BasicListUI$Handler.intervalRemoved(Unknown Source)
    at javax.swing.AbstractListModel.fireIntervalRemoved(Unknown Source)
    at javax.swing.DefaultListModel.clear(Unknown Source)
    at com.hacking.programm.source.InstagramNormal.closeInstagramNormal(InstagramNormal.java:111)
    at com.hacking.programm.source.ManagerListener.actionPerformed(ManagerListener.java:47)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)


Folgende Zeilen sind Fehler:
Java:
            @Override
            public void valueChanged(ListSelectionEvent ls) {
                Element e = list.getSelectedValue();
                
                //Sysout wird als Fehler angezeigt
                System.out.println(e.getID() + "   " + e.getName());
                
            }
        });

Java:
    public static void closeInstagramNormal() {
    
    //model clear wird als Fehler angezeigt
        model.clear();
        InstagramNormal.dispose();
        new Menu();
    }

Java:
        } else if(e.getSource() == Manager.Back) {
            
            if(InstagramNormal.InstagramNormal.isShowing()) {
            
            //und diese noch
                InstagramNormal.closeInstagramNormal();
            }


Woran kann das ganze liegen?
 

mrBrown

Super-Moderator
Mitarbeiter
Komplett alle? Dann kann ich aber nichtmehr auf die closeInstagramNormal von anderen Klassen drauf zugreifen und ich kann in closeInstagram keine Variablen von der Klasse verwenden. Dann bringt das ja auch nichts :/
Jap, alle.

Die dann aufkommenden Probleme solltest du dann sinnvoll lösen, indem du Objekte nutzt.


Static solltest du bei Feldern nur für Konstanten (werte, die sich niemals ändern) und bei Methoden nur für die main und wenn nötig kleine Utility-Funktionen nutzen. In deinem Code gibt es beides nicht.


@mrBrown Weil er es überschreibt bei static (call by reference) ? Kann das sein?
Ne. Eher, weil static da eben nicht überschrieben wird, er also derselben Liste ständig neue Listener hinzufügt.
Oder einfach: weil static benutzt wird, ohne zu Wissen was genau es bewirkt.
 

mrBrown

Super-Moderator
Mitarbeiter
Okay ich habe die meisten Sachen die ich nicht in anderen Klassen verwende zu non static gemacht nun bekomme ich immer 2 ausgaben aber nun bekomme ich diesen Fehler:
Nicht die meisten, alles.

NPEs sind leicht zu beheben, einfach mal mit dem Debugger prüfen, was null ist, und dann beheben ;)

Genauso die anderen Fehler: prüfen, was da der Fehler ist (zb die Fehlermeldung lesen) und dann überlegen, warum das dort ein Fehler ist, und wie man das lösen kann.
 

DoppelFabi

Aktives Mitglied
Der Fehler liegt dabei, das ich die Elemente von der Liste entfernen muss beim back, weil sonnst wird alles immer wieder neu geladen und verdoppelt sich. Aber wenn ich von model was entfernen möchte kommen sogut wie immer Fehler. sowas wie model.clear geht nicht oder model.removeAllElements geht auch nicht. Gibt es bessere Methoden die funktionieren?
 

mrBrown

Super-Moderator
Mitarbeiter
Entfern erstmal alle static.

Dann fix alle Compile-Fehler (dafür wirst du ziemlich sicher @Robats Tipp beherzigen müssen...)

Danach kannst du dir über eventuell vorhandene doppelte Elemente Gedanken machen.
 

Robat

Top Contributor
Und mit einem passenden Design sollte es auch nicht vorkommen, dass Elemente doppelt hinzugefügt werden. Aber auch das Problem sollte sich lösen lassen wenn du dir a) Grundlagen anschaust und dich b) über passende LayoutManager (CardLayout zB) informierst
 
K

kneitzel

Gast
Nein, der Fehler ist, dass Du offenbar eine statische Liste hast, die einmal beim Laden der Klasse initialisiert wird. Und da fügst Du dann immer wieder die Elemente hinzu.

Daher: Nutz keine statischen Variablen, so wie es mehrfach gesagt wurde. Wenn irgend etwas auf die Instanz zugreifen muss, dann gibst Du da eine entsprechende Referenz und gut ist es.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
U JList erstellen Java Basics - Anfänger-Themen 2
Soloeco JList/DefaultListModel: Wie kann ich ein Panel hinzufügen? Java Basics - Anfänger-Themen 1
J Objekt bei Auswahl in jList ändern Java Basics - Anfänger-Themen 6
F JList Elemente mit Strings vergleichen Java Basics - Anfänger-Themen 12
S Export aus JList Java Basics - Anfänger-Themen 6
M Erste Schritte JList einträge Java Basics - Anfänger-Themen 1
M Erste Schritte Doppelte Ausgabe? (JList) Java Basics - Anfänger-Themen 1
M Erste Schritte Auswahl in einer JList Java Basics - Anfänger-Themen 2
P JList, aus selectedValue bestimmten Wert aus Containerklasse auslesen Java Basics - Anfänger-Themen 4
N JList + DefaultListModel + JScrollPane --> ensureIndexIsVisible funktioniert nicht immer Java Basics - Anfänger-Themen 1
C JList Einträge nach Datum sortieren Java Basics - Anfänger-Themen 3
J Element zu jList hinzufügen NullPointerExcepetion Java Basics - Anfänger-Themen 2
S jList --> Array einfügen und Liste löschen Java Basics - Anfänger-Themen 5
H Kein Zugriff auf das Element einer JList möglich: Fehlermeldung Java Basics - Anfänger-Themen 2
I in listFiles() oder JList Dateiendungen entfernen Java Basics - Anfänger-Themen 14
N Erste Schritte MySQL Tabelle in JList darstellen Java Basics - Anfänger-Themen 1
O JList aktualisieren während Dateieinlesung Java Basics - Anfänger-Themen 4
B JFileChooser und JList Java Basics - Anfänger-Themen 7
OnDemand Enumeration <> JList Java Basics - Anfänger-Themen 5
P Mehrfachauswahl in einer JList Java Basics - Anfänger-Themen 2
A JList Elemente in ein andres JList Adden Java Basics - Anfänger-Themen 5
C .txt und Jlist Java Basics - Anfänger-Themen 10
J Daten in eine JList einfügen Java Basics - Anfänger-Themen 6
A JList / toString modify Java Basics - Anfänger-Themen 2
K jlist an text anpassen Java Basics - Anfänger-Themen 3
D Erste Schritte JList + Checkbox Java Basics - Anfänger-Themen 5
I kein zugriff auf jList oder Textfield Java Basics - Anfänger-Themen 2
A JList bearbeiten Java Basics - Anfänger-Themen 2
M Index einer JList ausgeben Java Basics - Anfänger-Themen 4
M Inhalt/Wert aus einer JList ablesen Java Basics - Anfänger-Themen 5
J Markierte Einträge (Dateien) in JList sollen in einen anderen Ordner verschoben werden. Java Basics - Anfänger-Themen 12
J Markierte Items in einer JLIST in einen Ordner verschieben Java Basics - Anfänger-Themen 2
A Input/Output Hashmap in einem JPanel via JList anzeigen Java Basics - Anfänger-Themen 8
S ListModel - Anzeige im JList Java Basics - Anfänger-Themen 4
H JList Java Basics - Anfänger-Themen 2
G JList Objekte richtig anzeigen in JDK 6 Java Basics - Anfänger-Themen 5
U JList Java Basics - Anfänger-Themen 6
L HashMap zu JList Java Basics - Anfänger-Themen 6
C Input/Output Inhalte von ArrayList und JList in Datei schreiben Java Basics - Anfänger-Themen 5
M Jlist Elemente hinzufügen Java Basics - Anfänger-Themen 2
F Koordinaten JList darstellen Java Basics - Anfänger-Themen 4
M BeanBinding Jlist an Jlabel Java Basics - Anfänger-Themen 2
M GUI JList - Objekte listen u. Feld anzeigen? Java Basics - Anfänger-Themen 16
E JList GUI aktualisieren? Java Basics - Anfänger-Themen 3
JAVAnnik JList Auswahl Java Basics - Anfänger-Themen 2
Z In JList per Doppelklick eine Datei öffnen (z.B. ein PDF) Java Basics - Anfänger-Themen 16
P Jlist + Popupmenu Java Basics - Anfänger-Themen 10
M Properties Eintrag löschen, welcher in der JList "ausgewählt" wurde Java Basics - Anfänger-Themen 2
c_sidi90 File Array an Jlist übergeben Java Basics - Anfänger-Themen 11
J JList Inhalt nach JButton Klick aktualisieren Java Basics - Anfänger-Themen 8
B JList und JTable: leere Zeilen bei listfiles(); Java Basics - Anfänger-Themen 5
N DefaultListModel auf JList sortieren Java Basics - Anfänger-Themen 7
A JList mit Überschrift Java Basics - Anfänger-Themen 2
K Scrollbalken in JList funktioniert nicht Java Basics - Anfänger-Themen 9
B JList wird nicht aktualisiert bzw hat keine Items Java Basics - Anfänger-Themen 2
D JList nicht sichtbar Java Basics - Anfänger-Themen 4
B JList mit Scrollbar? Java Basics - Anfänger-Themen 7
K Datenbindung an JTable, JList, Primärschlüssel verstecken Java Basics - Anfänger-Themen 4
M JList Event Java Basics - Anfänger-Themen 5
M JList Index selektieren ausschalten. Java Basics - Anfänger-Themen 7
M ArrayList<int[]> - Problem mit JList! Java Basics - Anfänger-Themen 27
M JList + ListModel Java Basics - Anfänger-Themen 26
L JList Aktualisieren funktioniert nur Zufällig Java Basics - Anfänger-Themen 3
T JList aktualisieren Java Basics - Anfänger-Themen 12
T alle Ordner in einem Ordner in JList anzeigen Java Basics - Anfänger-Themen 3
R .Jpg anzeigen lassen nach klick in JList Java Basics - Anfänger-Themen 11
F Hilfe! JList Inhalte vertauschen Java Basics - Anfänger-Themen 2
A Eintrag einer JLIST speichern Java Basics - Anfänger-Themen 3
A Anordnung von JList Elementen Java Basics - Anfänger-Themen 3
B JList wird nach Ändern weiß Java Basics - Anfänger-Themen 11
B Einträge im JList einfügen Java Basics - Anfänger-Themen 9
S JList mit icons UND strings für Dialogbox Java Basics - Anfänger-Themen 2
hdi Fehler beim Model-Update einer JList (DefaultListModel) Java Basics - Anfänger-Themen 3
DStrohma Index einer markierten Zeile aus einer JList bekommen? Java Basics - Anfänger-Themen 5
P JList in JPanel anzeigen Java Basics - Anfänger-Themen 2
hdi Synchronisation zwischen JList und ListModel Java Basics - Anfänger-Themen 6
D Suche in JList nach dem ersten Buchstaben Java Basics - Anfänger-Themen 2
hdi JList mit Model und Observer -> Chaos, blicke nicht durch Java Basics - Anfänger-Themen 22
1 JList Problem : Synchronisation mit Vector klappt nicht :( Java Basics - Anfänger-Themen 6
G Elemente aus jList entferne. Java Basics - Anfänger-Themen 2
G JList updaten Java Basics - Anfänger-Themen 7
K jList scrollPane Java Basics - Anfänger-Themen 2
7 Java Swing: Wie JScrollPane zur JList hinzufügen? Java Basics - Anfänger-Themen 12
K JList verschiebt sich Java Basics - Anfänger-Themen 7
G String in JList Java Basics - Anfänger-Themen 11
T Jlist Object hinzufügen Java Basics - Anfänger-Themen 2
B Auslesen der JList Java Basics - Anfänger-Themen 11
S jList Multiple Selection mit Klick Java Basics - Anfänger-Themen 2
M Dateien in einem Ordner, JList Java Basics - Anfänger-Themen 7
G JList größe verändert sich Java Basics - Anfänger-Themen 2
M JList Parameter verschieben Java Basics - Anfänger-Themen 3
C jList - Zeile Markieren - jList.setSelectedIndex(wert); Java Basics - Anfänger-Themen 3
G JList mit LinkedList füllen Java Basics - Anfänger-Themen 2
G JList Mehrfachselektion Java Basics - Anfänger-Themen 6
N 2 spaltige JList, mit dynamischen Inhalt Java Basics - Anfänger-Themen 4
P JList mit setListData(<Vector>) Java Basics - Anfänger-Themen 7
J GUI mit JList Java Basics - Anfänger-Themen 2
N drag and drop mit JList Java Basics - Anfänger-Themen 5
G 1. Buchstabe eines JList eintrages verschieden farbig machen Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben