查找JList的选定项目并实时显示


问题内容

我有一个JList,我正在显示一些ID。我想捕获用户单击的ID并将其显示在上JLabel

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

上面的代码为我提供了选定的JList值。但是此代码必须放置在button事件中,当我单击按钮时,它将获得JList值并将其分配给JLabel

但是,我想做的是,只要用户单击其中的一项以实时JList更新JLabel。(无需单击按钮即可触发操作)


问题答案:

一个简单的示例如下所示,使用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();
    }

}