2013-06-19 2 views
1

나는 JList입니다. 목록에서 같은 시간에 ALT + 마우스를 클릭 할 때마다 이미 선택된 값을 삭제하고 싶습니다. 그렇게하는 방법? 나는 사용할 청취자를 모른다.ALT를 누른 상태에서 JList에서 선택한 요소를 삭제합니다.

문제는 내가 값을 선택하고 목록을 다시 클릭하면 이전 선택이 손실되고 새 항목이 선택된다는 것입니다.

은 내가 그랬어 :

 list.addMouseListener(new MouseListener() { 

     ... 

      @Override 
      public void mousePressed(MouseEvent e) { 
       System.out.println(e); 
       int[] selected = list.getSelectedIndices();  
       if(selected.length > 0 && (e.getModifiers() & InputEvent.ALT_MASK) == InputEvent.ALT_MASK){ 
        System.out.println("tu "); 
        for(int i: selected){ 
         model.remove(i); 
        } 
       } 

      } 
.... 
} 

그러나 문제는 단지 하나의 요소가 삭제된다는 점이다. 내가 ALT있는 이것은 하나의 문제는 내가 선택한 값이 다시 이전의 선택이 끊어 목록을 클릭하면, 새 항목이 선택되어 있는지입니다

+1

더 나은 도움을 받으려면 [SSCCE] (http://sscce.org) –

+2

을 게시하십시오. 색인과 관련된 문제가있을 수 있습니다. 항목 1, 3 및 5를 선택했다고 상상하십시오. 항목 1 -> 항목 3 및 5를 제거하고 이제 항목 2 및 4가되지만 항목 3을 제거하도록 요청하면 (실제로 원래 항목 4가 제거됩니다) 결국에는 항목 5 (실제로 원래 항목 7)를 제거하도록 요청하십시오. 먼저 모든 개체를 가져 와서 색인 대신 인스턴스별로 제거하거나 색인을 역순으로 정렬하고 색인으로 제거하십시오 –

+1

또한 청취자가 트리거되기 전에 ALT 마우스 클릭으로 선택이 변경되지 않도록하십시오. – Robin

답변

2

클릭합니다.

Alt + mousePressed는 선택을 변경하는 데 사용됩니다. 이것은 Alt 키의 일반적인 사용법입니다. Windows 탐색기와 같은 응용 프로그램에서이 키 조합을 사용하여 어떻게 작동하는지보십시오.

따라서 더 나은 구현은 아마도 다른 마우스 + 키 조합을 사용하는 것입니다. 표준이 무엇인지 모르겠지만 어쩌면 단지 "삭제"키를 사용하여 선택한 항목을 삭제할 수 있다고 제안 할 것입니다. 물론 확인 대화 상자를 팝업해야합니다. 마우스를 사용하는 경우 마우스 오른쪽 버튼으로 표시되는 팝업 메뉴를 사용하고 메뉴에는 삭제 작업이 포함됩니다. 다시 한번 확인 대화 상자가 표시됩니다.

응용 프로그램을 작성할 때마다 사용자는 키보드 나 마우스를 사용하여 작업을 수행 할 수 있어야합니다.