查找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 } } });