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

2022-09-02 23:28:23

我有一个,在那里我显示一些ID。我想捕获用户单击的 ID,并在 .JListJLabel

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

上面的代码给了我选择的值。但是这个代码必须放在一个按钮事件中,当我点击按钮时,它将获得JList值并将其分配给.JListJLabel

但是,我想做的是,一旦用户点击一个项目,就可以实时更新。(无需单击按钮即可触发操作)JListJLabel


答案 1

一个简单的例子是下面使用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();
    }

}

答案 2

你为什么不把 a 放在你的 上,并添加你的上述代码。ListSelectionListenerJList

我假设您已经知道如何根据您的问题在JButtons上创建侦听器,因此您只需要调整它以创建一个,然后将侦听器分配给您的使用ListSelectionListenerJListjlist.addListSelectionListener(myListener);

这里有一个很好的教程,应该可以帮助您入门,或者参考文档

你应该瞄准这样的东西...

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

推荐