스윙 GUI에 두 개의 JList가 있습니다. 이제는 사용자가 버튼 (예 : TransferButton)을 클릭하면 하나의 JList에서 선택된 요소가 첫 번째 JList에서 두 번째 JList로 추가되고 첫 번째 JList에서 선택된 요소가 제거됩니다.한 JList의 요소를 Java의 다른 JList로 전송하는 방법은 무엇입니까?
답변
모델은 선택에 대해 알지 못합니다.
JList는 선택한 항목 또는 선택한 색인을 가져 오는 여러 가지 방법을 제공합니다. 이러한 메소드를 사용하여 항목을 가져 와서 다른 목록의 모델에 추가하십시오.
두 개의 JList
이 있고 그 다음에 각각 ListModel
이 있습니다. 구현 방법에 따라 한 모델에서 요소를 제거하고 다른 요소에 추가 할 수 있습니다. 하지만 ListModel
인터페이스는 기본적으로 요소 액세스 이외의 다른 요소에 신경을 쓰지 않으므로 add
및 remove
메서드를 직접 구현해야합니다.
현재 두 JList의 목록 모델은 DefaultListModel이지만 필요한 경우 변경할 수 있습니다. DefaultListModel은 getSelectedItem 또는 getSelectedItems와 같은 메서드를 제공하지 않습니다. –
이 경우에는 사용자 고유의 모델을 구현해야합니다. 또는 DefaultListModel에서 파생시키고 적절하게 확장하십시오. – Joey
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);
}
나는 당신이 javadoc을보고 물어보기 전에 하나 또는 두 가지를 시도했다고 가정합니까? – Bozho