2010-01-22 4 views
0

У меня есть два JList на качающемся графическом интерфейсе. Теперь я хочу, чтобы, когда пользователь нажимает кнопку (например, TransferButton), выбранные элементы из одного JList добавляются из первого JList во второй JList и удаляют выбранные элементы из первого JList.Как перенести элементы из одного JList в другой JList в Java?

+1

Я предполагаю, что вы посмотрели на javadoc и попробовали одну или две вещи, прежде чем спрашивать? – Bozho

ответ

3

Модель не знает о выборе.

JList предоставляет несколько методов для получения выбранного элемента или выбранного индекса. Используйте эти методы для получения элементов и добавления их в модель другого списка.

2

У вас есть два JList s, тогда у вас также есть свои ListModel s. В зависимости от того, как вы их реализовали, вы можете просто удалить элементы из одной модели и добавить их в другую. Обратите внимание, однако, что интерфейс ListModel по умолчанию не заботится о доступе к элементу, поэтому вам, вероятно, придется реализовать add и remove.

+0

В настоящее время в списках моделей JList используется DefaultListModel, но я могу изменить это, если это необходимо. DefaultListModel не предоставляет никакого метода, такого как getSelectedItem или getSelectedItems ... –

+0

Правильно, вы должны реализовать свою собственную модель в этом случае. Или вывести из DefaultListModel и соответствующим образом расширить его. – Joey

1
DefaultListModel leftModel = new DefaultListModel(); 
leftModel.addElement("Element 1"); 
leftModel.addElement("Element 2"); 
leftModel.addElement("Element 3"); 
leftModel.addElement("Element 5"); 
leftModel.addElement("Element 6"); 
leftModel.addElement("Element 7"); 

JList leftList = new JList(leftModel); 

DefaultListModel rightModel = new DefaultListModel(); 
JList rightList = new JList(rightModel); 

Предположим, у вас есть два компонента JList, как описано в коде выше (слева и справа). Вы должны написать следующий код для переноса выбранных значений слева направо в JList.

for(Object selectedValue:leftList.getSelectedValuesList()){ 
    rightModel.addElement(selectedValue); 
    leftModel.removeElement(selectedValue); 
} 
Смежные вопросы