Find selected item of a JList and display it in real time

后端 未结 3 1439
-上瘾入骨i
-上瘾入骨i 2020-12-14 19:13

I have a JList, where i am displaying some ID\'s. I want to capture the ID the user clicked and dis play it on a JLabel.

String sel         


        
相关标签:
3条回答
  • 2020-12-14 20:04

    Use a ListSelectionListener:

    JList list = new JList(...);
    list.addListSelectionListener(new ListSelectionListener() {
      public void valueChanged(ListSelectionEvent evt) {
        if (!evt.getValueIsAdjusting()) {
          // code here
        }
      }
    });
    
    0 讨论(0)
  • 2020-12-14 20:05

    Why don't you put a ListSelectionListener on your JList, and add your above code in to it.

    I'm assuming you already know how to create listeners on JButtons, based on your question, so you just need to tweak it to create a ListSelectionListener instead, then assign the listener to your JList using jlist.addListSelectionListener(myListener);

    There is a nice tutorial here that should get you started, or refer to the documentation

    You should be aiming for something like this...

    jlist.addListSelectionListener(new ListSelectionListener() {
        public void valueChanged(ListSelectionEvent event) {
            if (!event.getValueIsAdjusting()){
                JList source = (JList)event.getSource();
                String selected = source.getSelectedValue().toString();
            }
        }
    });
    
    0 讨论(0)
  • 2020-12-14 20:11

    A simple example would be like below using 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();
        }
    
    }
    
    0 讨论(0)
提交回复
热议问题