Как перенести элементы из одного JList в другой JList в Java?

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


person Yatendra    schedule 22.01.2010    source источник
comment
Я предполагаю, что вы посмотрели на javadoc и попробовали одну или две вещи, прежде чем спрашивать?   -  person Bozho    schedule 22.01.2010


Ответы (3)


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

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

person cconway    schedule 22.01.2010

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

person Joey    schedule 22.01.2010
comment
В настоящее время моделями списков обоих JList является DefaultListModel, но при необходимости я могу изменить это. DefaultListModel не предоставляет никаких методов, таких как getSelectedItem или getSelectedItems... - person Yatendra; 22.01.2010
comment
Правильно, в этом случае вам нужно реализовать свою собственную модель. Или унаследуйте от DefaultListModel и соответствующим образом расширьте его. - person Joey; 22.01.2010

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);
}
person Otabek O'ktamjon o'gli    schedule 17.02.2014