あなたのソリューションは、次のように非常に簡単です。
- 左のリストから選択したすべてのアイテムを取得する
- 左のリストから選択した項目を右のリストに追加
そして、Add All と Remove All を実行するのは、間違いなく非常に簡単です。JList クラスは、上記のすべてを実行するメソッドを提供します。
JList.getSelectedIndices() は、選択されたすべてのインデックスの int (int[]) の配列を返します。したがって、リストを調べて、それらのインデックスにあるアイテムを取得し、それらを右リストに追加します。
List<Object> myItemsForRightList = new ArrayList<Object>();
int[] selectedIndexes = jListLeft.getSelectedIndicies();
for(int i=0; i < selectedIndexes.length; i++) {
Object whatever = jListLeft.getElementAt(selectedIndexes[i]);
((DefaultListModel)jListRight.getModel()).addElement(whatever);
}
API が提供するものも参照することをお勧めします @ http://docs.oracle.com/javase/6/docs/api/javax/swing/JList.html
--- 編集 ---
完全なソースコードが提供されていないという理由だけで、JDK 7 を念頭に置いて上記のコードを再投稿しています
public static void main(String ... args) {
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
DefaultListModel<String> defaultListModel = new DefaultListModel<String>();
defaultListModel.addElement("Bla bla bla");
defaultListModel.addElement("Ble ble ble");
defaultListModel.addElement("Blo blo blo");
final JList<String> list = new JList<String>();
list.setPreferredSize(new Dimension(400, 200));
list.setModel(defaultListModel);
JButton button = new JButton("Add");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
((DefaultListModel<String>)list.getModel()).addElement("New one added");
}
});
frame.setLayout(new BorderLayout(5, 5));
frame.add(new JScrollPane(list), BorderLayout.NORTH);
frame.add(button, BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
}