Слушать JList setSelectedIndex - PullRequest
       14

Слушать JList setSelectedIndex

0 голосов
/ 25 февраля 2011
MyJList myList = new MyJList();
    myList.addListSelectionListener(new ListSelectionListener() {

    @Override
    public void valueChanged(ListSelectionEvent e) {

    if(!e.getValueIsAdjusting()){
        System.out.println("Selected!");
    }
    }
});

.,.

class MyList extends JList{


    public MyList () {
    super();

    this.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 

    this.setSelectedIndex(0);

   }

}

Когда я щелкаю мышью по элементу списка, я вижу сообщение «Выбрано!».

При запуске программы это сообщение не отображается, нопункт № 0 выбран.

Ответы [ 3 ]

2 голосов
/ 25 февраля 2011

Вы setSelectedIndex в конструкторе

Затем, после этого, добавьте SelectionListener

когда setSelectedIndex вызывается ... Нет слушателя

0 голосов
/ 25 февраля 2011

Посмотрите в порядке вашего кода:

a) вы создаете список и устанавливаете индекс в 0
b) вы добавляете ListSelectionListener.Ну, ничего не изменилось с тех пор, как вы добавили прослушиватель, поэтому событие не запускается.

Попробуйте добавить:

list.setSelectedIndex(1)

после добавления прослушивателя, чтобы посмотреть, было ли событие запущено.

0 голосов
/ 25 февраля 2011

Это именно то, что должно произойти.valueChanged вызывается только тогда, когда пользователь выбирает элемент.setSelectedIndex не вызывает слушателей.

...