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