Найти выбранный элемент JList и отобразить его в режиме реального времени
У меня есть JList
, где я показываю некоторые идентификаторы. Я хочу захватить идентификатор, который пользователь нажал, и воспроизвести его на JLabel
.
String selected = jlist.getSelectedItem().toString();
Приведенный выше код дает мне выбранное значение JList
. Но этот код должен быть помещен внутри события кнопки, где, когда я нажимаю кнопку, он получит значение JList, назначая его JLabel
.
Но, что я хочу сделать, как только пользователь нажимает элемент JList
для обновления JLabel
в режиме реального времени. (без нажатия кнопок для запуска действия)
Ответы
Ответ 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
}
}
});