2011-04-14 2 views
3

아래 코드는 JPanel에 사진을 표시합니다. 실제로, JPanel은 사진 앨범을 거치며 JPanel을 클릭하면 패널이 다음 프레임으로 넘어 가게됩니다. 또한 JPanel을 마우스 오른쪽 버튼으로 클릭하면 팝업 메뉴가 표시되도록 구성되었습니다.마우스 이벤트를 구현하는 올바른 방법

나는 팝업 메뉴를 구현할 때 모든 플랫폼에 대한 트리거를 잡으려면 mousePressed()와 mouseReleased()를 모두 재정의해야한다고 읽었습니다. 그러나 JPanel과 연결된 리스너가 있으므로 사용자가 윈도우를 클릭하면 JPanel은 두 장의 사진을 전진시킵니다. 이것은 이해할 만하지만, 모든 플랫폼에서 팝업을 표시 할 수 있도록 코드를 어떻게 작성해야합니까 (내 교수는 Linux에서 내 프로그램을 검사 할 수 있고 집에서는 Windows에서 코드를 작성해야합니다).

+2

코드를 게시하는 것을 잊었습니다. – unholysampler

답변

2

사용

MouseEvent.isPopupTrigger() 

플랫폼에 대한 지정된 이벤트 팝업을 표시하는 데 사용할지 여부를 결정합니다.

photoPanel.setComponentPopupMenu(photoPopupMenu); 

그 다음의 MouseListener에 어떤 노력을 필요로하지 않고, 그 속성을 설정하는 것은 당신하여 popupMenu가 자동으로 표시합니다 -

각 방법 (의 mousePressed와의 mouseReleased)

+0

아니요, 너무 낮은 수준입니다. 일반적으로 항상 가장 높은 추상화를 사용하십시오. – kleopatra

3

JComponent의이 componentPopupMenu는 속성이이 되었는데요 마우스로 트리거되는 동작 (다음으로 진행)이 왼쪽으로 한 번 눌렀을 때만 발생하는지 확인하십시오.

+0

+1 예 항상이 점을 잊어 버립니다. – camickr

관련 문제