2010-01-22 2 views
0

스윙 GUI에 두 개의 JList가 있습니다. 이제는 사용자가 버튼 (예 : TransferButton)을 클릭하면 하나의 JList에서 선택된 요소가 첫 번째 JList에서 두 번째 JList로 추가되고 첫 번째 JList에서 선택된 요소가 제거됩니다.한 JList의 요소를 Java의 다른 JList로 전송하는 방법은 무엇입니까?

+1

나는 당신이 javadoc을보고 물어보기 전에 하나 또는 두 가지를 시도했다고 가정합니까? – Bozho

답변

3

모델은 선택에 대해 알지 못합니다.

JList는 선택한 항목 또는 선택한 색인을 가져 오는 여러 가지 방법을 제공합니다. 이러한 메소드를 사용하여 항목을 가져 와서 다른 목록의 모델에 추가하십시오.

2

두 개의 JList이 있고 그 다음에 각각 ListModel이 있습니다. 구현 방법에 따라 한 모델에서 요소를 제거하고 다른 요소에 추가 할 수 있습니다. 하지만 ListModel 인터페이스는 기본적으로 요소 액세스 이외의 다른 요소에 신경을 쓰지 않으므로 addremove 메서드를 직접 구현해야합니다.

+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); 
}