16

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

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

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

但是,我想要做的是,一旦用户点击其中的一个项目来实时JList更新。JLabel(无需单击按钮来触发操作)

4

3 回答 3

28

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

}
于 2012-12-10T12:26:57.770 回答
9

你为什么不在你的,ListSelectionListenerJList加上你上面的代码。

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

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

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

jlist.addListSelectionListener(new ListSelectionListener() {
    public void valueChanged(ListSelectionEvent event) {
        if (!event.getValueIsAdjusting()){
            JList source = (JList)event.getSource();
            String selected = source.getSelectedValue().toString();
        }
    }
});
于 2012-12-10T12:18:13.660 回答
5

使用ListSelectionListener

JList list = new JList(...);
list.addListSelectionListener(new ListSelectionListener() {
  public void valueChanged(ListSelectionEvent evt) {
    if (!evt.getValueIsAdjusting()) {
      // code here
    }
  }
});
于 2012-12-10T12:19:46.390 回答