Как да прехвърля елементите от един JList в друг JList в Java?

Имам два JList на суинг GUI. Сега искам, когато потребител щракне върху бутон (да речем 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

Имате две JLists, тогава имате и съответните им ListModels. В зависимост от това как сте ги внедрили, можете просто да премахнете елементите от един модел и да ги добавите към другия. Имайте предвид обаче, че интерфейсът 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