2014-03-30 3 views
2

사용자가 단추를 클릭 할 때 JList에서 선택한 항목을 제거하려고합니다. 순간 JList에서 선택한 항목을 제거하는 방법

나는 이런 일이 :이 오류를 해결하려면 어떻게

java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 3 

, 그리고 : 나는 항목을 제거 버튼을 클릭하면

private void clickActionPerformed(java.awt.event.ActionEvent evt) { 
    myList.remove(myList.getSelectedIndex()); 
} 

,이 오류가 발생합니다 내 코드가 여러 항목을 제거합니까?

+0

에 속하지 않는하려면? 'ActionListener'를 버튼에 추가 한 다음'actionPerformed'를 오버라이드해야합니다. 우리에게 우리에게 보여준 장소에서 인덱스 벗어남 예외가 발생 했습니까? – user1803551

답변

1
Object[] oo=new Object[] { "Clark", "Skill" }; 
     for(Object o :oo) 
      model.addElement(o); 
     final JList list = new JList(model); 

     JButton btnDelete = new JButton("Delete"); 
     btnDelete.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 

       if(list.getSelectedIndex()>=0) 
       model.remove(list.getSelectedIndex()); 

      } 
     }); 
+0

가 작동하지 않습니다 ... – user2525364

1

JList를 구성하기 위해 일종의 ListModel을 사용한다고 가정 해 보겠습니다. 경우 먹으 렴 방금 다음을 수행 할 수있는 경우 : 당신의 "블랙리스트-버튼"을 클릭 할 때

DefaultListModel list = new DefaultListModel(); 
list.add("foo"); 

는 당신은이 작업을 수행 할 필요가 :

list.remove(JList.getSelectedIndex()); 
4

당신은 당신의 DefaultListModel에서 여러 항목을 삭제할 수 있습니다 가장 높은 선택된 인덱스에서 가장 낮은 인덱스로 삭제를 시작하면됩니다. 이런 식으로 뭔가 :

@Override 
public void actionPerformed(ActionEvent e) { 

    switch(e.getActionCommand()){ 
    case "Remove": { 
     int index = this.list[0].getSelectedIndices().length - 1; 

     while (this.list[0].getSelectedIndices().length != 0) { 
      this.defaultListModel[0].removeElementAt(this.list[0].getSelectedIndices()[index--]); 
     } 
    } 
... 
2

한번에 제거하는 객체가 아닌 인덱스 :

private JList<MyObject> list; 
private DefaultListModel<MyObject> myobjectListModel; 
public FabricaCoches() 
{ 
.... 
myobjectListModel = new DefaultListModel<MyObject>(); 
list = new JList<MyObject>(myobjectListModel); 
.... 
} 
@Override 
public void actionPerformed(ActionEvent arg0) 
{ 
    // get a list with selected objects 
    List<MyObject> selectedItems = list.getSelectedValuesList(); 

    for (MyObject o: selectedItems) 
     myobjectListModel.removeElement(o); 

}`clickActionPerformed` 어떤 클래스를

관련 문제