Wie füge ich ein Listener-Ereignis zu JList-Elementen hinzu, die vom DefaultListModel-Objekt hinzugefügt werden?

StackOverflow https://stackoverflow.com//questions/21046946

Frage

Ich habe 2 JLists „addGroupList“ und „addApkList“ erstellt.Ich füge Elemente zu addGroupList hinzu, indem ich model.addElement(arrayList1.get(arrayList1.size()-1)); verwende.Die Sache ist, ich möchte addApkList basierend auf dem ausgewählten Wert von addGroupList aktualisieren.Zu diesem Zweck versuche ich, einen Ereignis-Listener hinzuzufügen, damit ich auf etwas reagieren kann, wenn ein Listenelement ausgewählt ist, das Ereignis jedoch nicht ausgelöst wird.Was muss ich tun, um dies zu erreichen?Im Folgenden finden Sie den Code, den ich verwende.

    model1 = new DefaultListModel();
    model2 = new DefaultListModel();

    addApkList = new JList(model1);
    addGroupList = new JList(model2);

    scrollPane1 = new JScrollPane();
    scrollPane1.setViewportView(addApkList);
    scrollPane2 = new JScrollPane();
    scrollPane2.setViewportView(addGroupList);

Auf diese Weise habe ich JList definiert.Auf folgende Weise habe ich Elemente zu addGroupList hinzugefügt

model1.addElement(arrayList1.get(arrayList1.size()-1));

und auf folgende Weise habe ich einen Hörer hinzugefügt.

addGroupList.addListSelectionListener(new ListSelectionListener() {

        @Override
        public void valueChanged(ListSelectionEvent lse) {
            if (!lse.getValueIsAdjusting()) {
              System.out.println("Selection trigerred");
            }
        }
    });

An diesem Code scheint sich keine Änderung zu ergeben.Was mache ich falsch?Ich habe auch versucht, zu folgen

model1.addListDataListener(new ListDataListener() {

            @Override
            public void intervalAdded(ListDataEvent lde) {
                System.out.println("ddddddddddd");
                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
            }

            @Override
            public void intervalRemoved(ListDataEvent lde) {
                System.out.println("ddddddddddd");
                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
            }

            @Override
            public void contentsChanged(ListDataEvent lde) {
                System.out.println("ddddddddddd");
                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
            }
        });
War es hilfreich?

Lösung

Auf folgende Weise habe ich Elemente zu addGroupList hinzugefügt

model1.addElement(arrayList1.get(arrayList1.size()-1));

Nein, hast du nicht. model1 ist das Listenmodell für addApkList nicht addGroupList:

 addApkList = new JList(model1);

Es sollte sein model2.addElement(arrayList1.get(arrayList1.size()-1)).

Auf jeden Fall vermute ich, dass Sie eine erwarten ListSelectionEvent wird ausgelöst, wenn Sie einfach ein Element zum Listenmodell hinzufügen.Das wird nicht passieren.Sie müssen das hinzugefügte Element als das ausgewählte Element festlegen:

Object item = arrayList1.get(arrayList1.size()-1);
model2.addElement(item);
addGroupList.setSelectedValue(item, true);

Werfen Sie einen Blick darauf JList.setSelectedValue(Object anObject, boolean ShouldScroll) für weitere Details.

Andere Tipps

Ich habe 2 Jlisten Addgrouplist 'und' Addapklist 'erstellt.Ich füge hinzu Elemente zum Addgroplist mit model.addelement (arraylist1.get (arraylist1.size () - 1));Die Sache ist, ich Möchten Sie AddApplIST basierend auf dem ausgewählten Wert des Addgroppists aktualisieren.Zum Ich versuche, den Ereignislistener hinzuzufügen, damit ich darauf handeln kann etwas, wenn das Listenelement ausgewählt ist, aber das Ereignis ist nicht ausgelöst. Was mache ich, um das zu erreichen?Folgendes ist der Code, den ich verwende.

zum Beispiel

generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top