Подтвердить что ты не робот

Найти выбранный элемент JList и отобразить его в режиме реального времени

У меня есть JList, где я показываю некоторые идентификаторы. Я хочу захватить идентификатор, который пользователь нажал, и воспроизвести его на JLabel.

String selected = jlist.getSelectedItem().toString();

Приведенный выше код дает мне выбранное значение JList. Но этот код должен быть помещен внутри события кнопки, где, когда я нажимаю кнопку, он получит значение JList, назначая его JLabel.

Но, что я хочу сделать, как только пользователь нажимает элемент JList для обновления JLabel в режиме реального времени. (без нажатия кнопок для запуска действия)

4b9b3361

Ответ 1

Простой пример будет выглядеть следующим образом: 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();
    }

}

Ответ 2

Почему бы вам не поставить 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();
        }
    }
});

Ответ 3

Используйте ListSelectionListener:

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