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

时间:2012-12-10 12:16:17

标签: java swing jlist

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

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

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

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

3 个答案:

答案 0 :(得分:21)

下面使用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();
    }

}

答案 1 :(得分:8)

为什么不在ListSelectionListener上添加JList,并将上述代码添加到其中。

我假设你已经知道如何根据你的问题在JButton上创建监听器,所以你只需要调整它来创建一个ListSelectionListener,然后将监听器分配给你的JList使用jlist.addListSelectionListener(myListener);

有一个很好的教程here可以帮助您入门,或参考documentation

你应该瞄准这样的事情......

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

答案 2 :(得分:5)

使用ListSelectionListener

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