내 질문에. 목록 구성 요소 내에서 버튼과 같은 구성 요소를 추가 할 수 있습니까 (버튼을 클릭하면 트리거됩니다).코드 목록의 구성 요소
이 이미지는 내가 무엇을 참조 더 나은 설명 :
http://2.bp.blogspot.com/-HThpKcgDyRA/URI_FdpffMI/AAAAAAAAAUI/SficZAPXaCw/s1600/1.png
내 질문에. 목록 구성 요소 내에서 버튼과 같은 구성 요소를 추가 할 수 있습니까 (버튼을 클릭하면 트리거됩니다).코드 목록의 구성 요소
이 이미지는 내가 무엇을 참조 더 나은 설명 :
http://2.bp.blogspot.com/-HThpKcgDyRA/URI_FdpffMI/AAAAAAAAAUI/SficZAPXaCw/s1600/1.png
예는하지만 일부 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()
}
샤이 제작 : Almog - 많은 작품, 감사합니다! –
작동하는 경우 답변을 수락하고 이상적으로 upvote해야합니다. –