我有一个JList
,我正在显示一些ID。我想捕获用户点击的ID并在JLabel
上显示它。
String selected = jlist.getSelectedItem().toString();
上面的代码为我提供了所选的JList
值。但是这个代码必须放在一个按钮事件中,当我点击按钮时,它将获得JList值并将其分配给JLabel
。
但是,我想要做的是,只要用户点击JList
的某个项目,即可实时更新JLabel
。 (无需单击按钮即可触发操作)
答案 0 :(得分:21)
下面使用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();
}
}
答案 1 :(得分:8)
为什么不在ListSelectionListener
上添加JList
,并将上述代码添加到其中。
我假设你已经知道如何根据你的问题在JButton上创建监听器,所以你只需要调整它来创建一个ListSelectionListener
,然后将监听器分配给你的JList
使用jlist.addListSelectionListener(myListener);
有一个很好的教程here可以帮助您入门,或参考documentation
你应该瞄准这样的事情......
jlist.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent event) {
if (!event.getValueIsAdjusting()){
JList source = (JList)event.getSource();
String selected = source.getSelectedValue().toString();
}
}
});
答案 2 :(得分:5)
使用ListSelectionListener
:
JList list = new JList(...);
list.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent evt) {
if (!evt.getValueIsAdjusting()) {
// code here
}
}
});