2013-10-18 5 views

답변

3

예는하지만 일부 handcoding을 필요로하고 (당신이 그것에 초점을 할당 할 수 없습니다 때문에) 만 터치를 위해 작동합니다.

일반적으로 목록을 처리하기보다는 구성 요소/컨테이너 계층을 사용하는 것이 좋습니다. 그러나 분명히 항상 실용적이지는 않습니다.

키는 항상 목록 작업 수신기를 사용하여 이벤트를 트리거하는 것입니다. 이 목록의 작업 처리 코드에있을 때 그래서 당신은 당신이 GUI 빌더에있는 경우이 매우 쉽습니다 ... 그것이 당신의 버튼에 의해 트리거 된 경우 알고

를 원하는 것 :

Button b = ((GenericListCellRenderer)list.getRenderer()).extractLastClickedComponent(); 
if(b != null && b == myButton) { 
    // your event code here for the button, the selected entry is list.getSelectedItem()/Index() 
} 

handcoded 접근법은 하나의 주요 경고와 매우 유사합니다. extractLastClickedComponent 메소드가 없습니다. 따라서 렌더러 내에 컴포넌트가 있다고 가정하면 액션 리스너를 추가하기 만하면됩니다. 액션 리스너 내에서 예를 들어 플래그를 설정하면됩니다. 예 :

myButton.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent ev) { 
     buttonWasClicked = true; 
    } 
}); 

// within the list listener we do the exact same thing: 
if(buttonWasClicked) { 
    // for next time... 
    buttonWasClicked = false; 

    // your event code here for the button, the selected entry is list.getSelectedItem()/Index() 
} 
+0

샤이 제작 : Almog - 많은 작품, 감사합니다! –

+0

작동하는 경우 답변을 수락하고 이상적으로 upvote해야합니다. –