Comment ajouter un écouteur d'événement pour JList éléments qui sont ajoutés par DefaultListModel objet?

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

Question

J'ai créé 2 JLists 'addGroupList" et "addApkList'.Je suis ajoutant des éléments à addGroupList l'aide d'un modèle.addElement(arrayList1.get(arrayList1.size()-1));le truc, c'est que je veux mettre à jour addApkList basée sur la valeur sélectionnée de addGroupList.Pour cela, je vais essayer d'ajouter un écouteur d'événement pour que je puisse agir sur quelque chose lors de l'élément de la liste est sélectionné, mais l'événement n'est pas de déclenchement.Que dois-je faire pour accomplir cette?voici le code que j'utilise.

    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);

de cette façon, j'ai défini JList.dans la suite, j'ai ajouté des éléments à addGroupList

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

et la manière suivante, j'ai ajouté l'auditeur à elle.

addGroupList.addListSelectionListener(new ListSelectionListener() {

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

Il ne semble pas y arriver toute modification du présent code.ce qui m je fais de mal?J'ai aussi essayé de suivre

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.
            }
        });
Était-ce utile?

La solution

Dans la suite, j'ai ajouté des éléments à addGroupList

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

Non, vous n'avez pas. model1 c'est la liste de modèle pour addApkList pas addGroupList:

 addApkList = new JList(model1);

Il devrait être model2.addElement(arrayList1.get(arrayList1.size()-1)).

En tout cas, je soupçonne que vous vous attendez pour un ListSelectionEvent de feu lorsque vous venez tout simplement ajouter un élément à la liste modèle.Cela n'arrivera pas.Vous devez définir l'élément ajouté que celle sélectionnée:

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

Jetez un oeil à JList.setSelectedValue(Objet anObject, boolean shouldScroll) pour plus de détails.

Autres conseils

J'ai créé 2 jlists 'Addgrouplist' et "Addapklist".J'ajoute éléments à addgrouplist en utilisant modèle.addelement (arraylist1.get (arraylist1.Size () - 1));la chose est, je Voulez-vous mettre à jour Addapklist en fonction de la valeur sélectionnée de Addgrouplist.Pour cela, j'essaie d'ajouter auditeur d'événements afin que je puisse agir sur Quelque chose lorsque l'élément de la liste est sélectionné mais que l'événement n'est pas trigeur. Que dois-je faire pour accomplir cela?Voici le code que j'utilise.

Par exemple

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class Testing extends JFrame {

    private static final long serialVersionUID = 1L;
    private DefaultListModel listModel = new DefaultListModel();
    private DefaultListModel listModelEmpty = new DefaultListModel();
    private JList list = new JList(listModel);
    private JList listEmpty = new JList(listModelEmpty);
    private JPanel panel = new JPanel(new GridLayout(1, 1));
    private int currentSelectedRow = 0;
    private int xX = 0;

    public Testing() {
        setLocation(400, 300);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        for (int x = 0; x < 9; x++) {
            listModel.addElement("" + x);
            xX++;
        }
        JScrollPane sp = new JScrollPane(list);
        list.addListSelectionListener(new ListSelectionListener() {
            @Override
            public void valueChanged(ListSelectionEvent lse) {
                if (!lse.getValueIsAdjusting()) {
                    System.out.println("Selection trigerred");
                }
            }
        });
        JScrollPane spEmpty = new JScrollPane(listEmpty);
        panel.add(spEmpty);
        panel.add(sp);
        add(panel, BorderLayout.CENTER);
        JButton btn1 = new JButton("Reset Model CastingModel");
        add(btn1, BorderLayout.NORTH);
        btn1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                //list.clearSelection();
                DefaultListModel model = (DefaultListModel) list.getModel();
                model.removeAllElements();
                for (int x = 0; x < 9; x++) {
                    model.addElement("" + (x + xX));
                    xX++;
                }
                list.setModel(model);
            }
        });

        JButton btn2 = new JButton("Reset Model directly from Model");
        add(btn2, BorderLayout.SOUTH);
        btn2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                //list.clearSelection();
                listModel.removeAllElements();
                for (int x = 0; x < 9; x++) {
                    listModel.addElement("" + (x + xX));
                    xX++;
                }
            }
        });
        pack();
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new Testing().setVisible(true);
            }
        });
    }
}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top