2012-04-12 4 views
0

JList에서 우선 순위별로 항목을 정렬하려면 어떻게해야합니까?
예를 들어 "세탁, 요리, 세탁"과 같은 여러 가지 작업이 있으며 가장 중요한 작업을 마우스로 정렬 할 수 있기를 원합니다.
이 지금까지 내 코드입니다 :우선 순위별로 작업 정렬

import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.*; 

public class Test extends JFrame implements ActionListener { 

    JPanel pLeft = new JPanel(); 
    JPanel pRight = new JPanel(); 
    String data[] = { 
     "Item 1", 
     "Item 2", 
     "Item 3", 
     "Item 4", 
     "Item 5" 
    }; 
    DefaultListModel model = new DefaultListModel(); 
    JList list = new JList(model); 
    JScrollPane listScroller = new JScrollPane(list); 
    JButton bUp = new JButton("UP"); 
    JButton bDown = new JButton("DOWN"); 

    public Test() { 
     this.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     this.setBounds(300, 100, 300, 200); 
     this.setVisible(true); 
     this.setLayout(new BorderLayout()); 
     pRight.setLayout(new BorderLayout()); 

     this.add(pLeft, BorderLayout.WEST); 
     this.add(pRight, BorderLayout.EAST); 

     listScroller.setPreferredSize(new Dimension(150, 150)); 
     pLeft.add(listScroller); 

     pRight.add(bUp, BorderLayout.NORTH); 
     pRight.add(bDown, BorderLayout.SOUTH); 

     bUp.addActionListener(this); 
     bDown.addActionListener(this); 

     for (int i = 0; i < data.length; i++) { 
      model.add(i, data[i]); 
     } 
    } 

    @Override 
    public void actionPerformed(ActionEvent ae) { 
     Object source = ae.getSource(); 
     if (source == bUp) { 
      model.setElementAt(model.getElementAt(list.getSelectedIndex()), list.getSelectedIndex() + 1); 
     } 
     if (source == bDown) { 
      model.setElementAt(model.getElementAt(list.getSelectedIndex()), list.getSelectedIndex() - 1); 
     } 

    } 

    public static void main(String[] args) { 
     Test test = new Test(); 
    } 
} 

는하지만 대신 위치를 "변화"의 이전 항목은 새로 대체됩니다.

+0

작업을 관리하도록 구성하기 때문에 기본 정렬 기능을 사용할 수 없습니다. 나는 그것이 막연하다고 생각한다. – Phani

+0

아니요, 사용자가 기본 정렬없이 단독으로이 작업을 수행 할 수 있어야합니다. – user1170330

+0

정렬 기능을 사용하여 JList로 이동할 수 있습니다. 괜찮아. 당신은 그 기능을 가진 많은 코드를 발견 할 것이다. 그냥 구글. – Phani

답변

3

JList을 사용하십시오. 자세한 내용은 How to Use Lists을 참조하십시오.

Drag'n'Drop 패키지는 목록을 재정렬하는 기능을 찾습니다. D' n'D API 사용 방법은 Java 자습서의 Drag and Drop and Data Transfer 레슨을 참조하십시오.

+0

JList에서 항목의 위치를 ​​변경하는 방법도 알고 있습니까? – user1170330

+2

@ user1170330 그건 앤드류가 말하는 _Drag'n'Drop_ 부분입니다. 드래그 앤 드롭으로 사용자는 항목을 드래그하여 목록의 새 위치로 드롭 할 수 있습니다. – Robin

+0

@Robin Din'D 레슨에 대한 링크를 편집으로 추가했습니다. –

관련 문제