查找JList的所选项目并实时显示

sha*_*Hwk 15 java swing jlist

我有一个JList,我正在显示一些ID.我想捕获用户点击的ID并在其上显示JLabel.

String selected = jlist.getSelectedItem().toString();
Run Code Online (Sandbox Code Playgroud)

上面的代码给出了我选择的JList值.但是这个代码必须放在一个按钮事件中,当我点击按钮时,它将获得JList值并将其分配给JLabel.

但是,我想要做的是,只要用户点击一个项目JListJLabel实时更新.(无需单击按钮即可触发操作)

Vin*_*nay 22

一个简单的例子就像下面使用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();
    }

}
Run Code Online (Sandbox Code Playgroud)

  • 太杂乱,保持你的答案准确.由于作者已经知道如何设置Java类,监听器等,因此只有监听器部分才有用.我正在删除我的downvote,因为答案仍然是正确的. (2认同)
  • @Blacklight 这对我来说真的是一个很好的建议。我会用我的进一步回答来考虑它。非常感谢 (2认同)
  • @sharonHwk所有的答案都有一点错误:看看event.getValueIsAdjusting属性 - 并且只在假的情况下做你的东西 (2认同)

wat*_*ios 8

你为什么不把它ListSelectionListener放在你身上JList,并将上面的代码加入其中.

我假设你已经知道如何根据你的问题在JButton上创建监听器,所以你只需要调整它来创建一个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();
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 不完整..(@sharon在另一个答案中已经注意到的效果) (2认同)

Bla*_*ght 5

使用ListSelectionListener:

JList list = new JList(...);
list.addListSelectionListener(new ListSelectionListener() {
  public void valueChanged(ListSelectionEvent evt) {
    if (!evt.getValueIsAdjusting()) {
      // code here
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

  • 不完整..(@sharon在另一个答案中已经注意到的效果) (4认同)