2012-02-22 5 views
8

Может ли кто-нибудь сказать мне короткий способ удалить выбранные элементы из моего JList?Удалить выбранный элемент из JList

Я искал в Google и здесь, но я нашел очень много способов. Каким образом я должен использовать?

+1

Получить модель JList (которая, вероятно, будет объектом [DefaultListModel] (http://docs.oracle.com/javase/7/docs/api/javax/swing/DefaultListModel.html)) и удалить выбранные элемент из модели с помощью метода 'removeElement (Object obj)'. –

+3

См. Стандартный Java [Swing tutorial] (http://docs.oracle.com/javase/tutorial/uiswing/components/list.html#mutable) по этой теме – DNA

+1

@JoopEggen: Я не являюсь нисходящим, если вот что вы просите, но я не согласен с вами в том, что я думаю, что есть один простой ответ. Вы получаете выбранный объект из JList (а не индекса), а если не null, вы вызываете метод удаления модели, который принимает объект: 'removeElement (obj)'. –

ответ

23

Как сказал @Andreas_D, центр данных, более абстрактный ListModel - это решение. Это может быть DefaultListModel. Вы должны явно указать модель в JList. Так (спасибо на комментарий @kleopatra):

DefaultListModel model = (DefaultListModel) jlist.getModel(); 
int selectedIndex = jlist.getSelectedIndex(); 
if (selectedIndex != -1) { 
    model.remove(selectedIndex); 
} 

Есть несколько remove... методов в DefaultListModel. Кстати, это хороший вопрос, так как немедленного решения в API (ListModel) нет.

+1

Я бы не получил индекс, а сам выбранный элемент, а затем вызвал метод removeElement модели, который принимает параметр Object. –

+2

согласен: ListModel - это самый минимальный из всех интерфейсов представления (ни изменяемый, ни модифицируемый), но это не проблема OPs: s/he заявляет, что прочитал раздел учебника (который показывает тот же образец, что и вы здесь) - минус проверка на выбор). Остерегайтесь: модель JList по умолчанию _not_ a DefaultListModel, вы должны явно установить ее. – kleopatra

3

Компонент JList подкрепляется надбавкой модели. Таким образом, единственный рекомендованный способ удалить элемент из списка view - удалить его из модели (и обновить представление).

+0

Если он использует DefaultListModel (и по всей вероятности, он есть), то нет необходимости обновлять представление, так как это должно быть сделано автоматически. –

+0

Это был более или менее общий ответ на общий вопрос. –