У меня есть два JList на поворотном графическом интерфейсе. Теперь я хочу, чтобы, когда пользователь нажимает кнопку (скажем, TransferButton), выбранные элементы из одного JList добавлялись из первого JList во второй JList и удаляли эти выбранные элементы из первого JList.
Как перенести элементы из одного JList в другой JList в Java?
Ответы (3)
Модель не знает об отборе.
JList предоставляет несколько методов для получения выбранного элемента или выбранного индекса. Используйте эти методы, чтобы получить элементы и добавить их в модель другого списка.
У вас есть два JList
, а также соответствующие им ListModel
. В зависимости от того, как вы их реализовали, вы можете просто удалить элементы из одной модели и добавить их в другую. Обратите внимание, однако, что интерфейс ListModel
по умолчанию не заботится о чем-то большем, чем доступ к элементам, поэтому вам, вероятно, придется реализовать там методы add
и remove
самостоятельно.
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);
}