Java 查找JList的选定项目并实时显示
我有一个Java 查找JList的选定项目并实时显示,java,swing,jlist,Java,Swing,Jlist,我有一个JList,其中显示了一些ID。我想捕获用户单击的ID并在JLabel上显示它 String selected = jlist.getSelectedItem().toString(); 上面的代码给出了所选的JList值。但此代码必须放在按钮事件中,当我单击按钮时,它将获得JList值并将其分配给JLabel String selected = jlist.getSelectedItem().toString(); 但是,我想做的是,只要用户单击JList中的一项,就可以实时更新J
JList
,其中显示了一些ID。我想捕获用户单击的ID并在JLabel
上显示它
String selected = jlist.getSelectedItem().toString();
上面的代码给出了所选的JList
值。但此代码必须放在按钮事件中,当我单击按钮时,它将获得JList值并将其分配给JLabel
String selected = jlist.getSelectedItem().toString();
但是,我想做的是,只要用户单击
JList
中的一项,就可以实时更新JLabel
。(无需单击按钮即可启动操作)为什么不在JList
上添加一个ListSelectionListener
,然后将上面的代码添加到其中呢
我假设您已经知道如何根据您的问题在JButtons上创建侦听器,因此您只需调整它以创建一个ListSelectionListener
,然后使用JList.addListSelectionListener(myListener)将侦听器分配给您的JList
代码>
有一个很好的教程可以让你开始学习,或者参考
你应该瞄准这样的目标
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
}
}
});
下面是一个使用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();
}
}
请告诉我投票失败的原因。这可能会帮助我把事情弄得一团糟,让你的答案准确无误。因为作者已经知道如何设置Java类、监听器等,所以只有监听器部分是有用的。不过我要取消我的反对票,因为答案仍然正确。@Blacklight这对我来说确实是个好建议。我将用我进一步的回答来概括它。谢谢lot@vini当我将Jlist值打印到控制台时,打印了两次。那么你有什么线索知道它为什么被调用两次吗?@sharonHwk所有的anwers都有一个小错误:查看事件。getValueIsAdjusting属性-只有在错误不完整的情况下才执行你的操作。。(@sharon在另一个答案中已经注意到了这一点)不完整。。(另一个答案中,@sharon已经注意到了这一点)