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

我有一个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(); } } 

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

我假设你已经知道如何根据你的问题在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 } } });