[英]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.