web-dev-qa-db-fra.com

Rechercher l'élément sélectionné d'une JList et l'afficher en temps réel

J'ai un JList, où j'affiche des identifiants. Je veux capturer l'ID sur lequel l'utilisateur a cliqué et l'afficher sur un JLabel.

String selected = jlist.getSelectedItem().toString();

Le code ci-dessus me donne la valeur JList sélectionnée. Mais ce code doit être placé dans un événement de bouton, où lorsque je clique sur le bouton, il obtiendra la valeur JList et l'affectera au JLabel.

Mais ce que je veux faire, c'est que dès que l'utilisateur clique sur un élément du JList pour mettre à jour le JLabel en temps réel. (sans avoir à cliquer sur les boutons pour déclencher une action)

14
sharon Hwk

Un exemple simple serait comme ci-dessous en utilisant listselectionlistener

import Java.awt.Dimension;
import Java.awt.FlowLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class JListDemo extends JFrame {

    public JListDemo() {

        setSize(new Dimension(300, 300));
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new FlowLayout());
        final JLabel label = new JLabel("Update");
        String[] data = { "one", "two", "three", "four" };
        final JList dataList = new JList(data);

        dataList.addListSelectionListener(new ListSelectionListener() {

            @Override
            public void valueChanged(ListSelectionEvent arg0) {
                if (!arg0.getValueIsAdjusting()) {
                  label.setText(dataList.getSelectedValue().toString());
                }
            }
        });
        add(dataList);
        add(label);

        setVisible(true);

    }

    public static void main(String args[]) {
        new JListDemo();
    }

}
21
Vinay

Pourquoi ne mettez-vous pas un ListSelectionListener sur votre JList et y ajoutez votre code ci-dessus.

Je suppose que vous savez déjà comment créer des écouteurs sur JButtons, en fonction de votre question, il vous suffit donc de l'ajuster pour créer un ListSelectionListener à la place, puis d'affecter l'écouteur à votre JList à l'aide de jlist.addListSelectionListener(myListener);

Il y a un joli tutoriel ici qui devrait vous aider à démarrer, ou reportez-vous à la documentation

Vous devriez viser quelque chose comme ça ...

jlist.addListSelectionListener(new ListSelectionListener() {
    public void valueChanged(ListSelectionEvent event) {
        if (!event.getValueIsAdjusting()){
            JList source = (JList)event.getSource();
            String selected = source.getSelectedValue().toString();
        }
    }
});
8
wattostudios

Utilisez un ListSelectionListener:

JList list = new JList(...);
list.addListSelectionListener(new ListSelectionListener() {
  public void valueChanged(ListSelectionEvent evt) {
    if (!evt.getValueIsAdjusting()) {
      // code here
    }
  }
});
5
Blacklight