繁体   English   中英

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

[英]Find selected item of a JList and display it in real time

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

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

上面的代码为我提供了选定的JList值。 但是此代码必须放在按钮事件中,当我单击按钮时,它将获得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();
    }

}

为什么不将ListSelectionListener放在JList ,然后将上面的代码添加到其中。

我假设您已经根据您的问题知道如何在JButtons上创建侦听器,因此您只需对其进行调整即可创建ListSelectionListener ,然后使用jlist.addListSelectionListener(myListener);将侦听器分配给您的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();
        }
    }
});

使用ListSelectionListener

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM