홈>
두 개의 마우스 버튼을 누른 상태에서 마우스를 끈 다음 두 버튼을 놓으면 어떤 버튼이 해제되었는지 어떻게 알 수 있습니까? 누르고있는 버튼은 MouseEvent.getModifiersEx ()로 검색 할 수 있지만, 릴리즈 이벤트 트리거 전에 눌린 모든 버튼이 해당 마스크에 저장되기 때문에 어떤 버튼이 릴리즈되었는지 알 수있는 방법이 없습니다 :
public void mouseReleased(MouseEvent e) {
int b1 = MouseEvent.BUTTON1_DOWN_MASK;
int b2 = MouseEvent.BUTTON2_DOWN_MASK;
System.out.println(e.getButton()) // prints "0" when the mousereleased
// event follows a mouseDragged
// event
if ((mouseEvent.getModifiersEx() & b1) == b1) {
System.out.println("button 1 released");
} else if ((mouseEvent.getModifiersEx() & b2) == b2) {
System.out.println("button 2 released");
}
/*
Following a mouseDragged event, assuming button 1 and button 2
were pressed before either was released, the first if clause
evaluates to true regardless of which button was actually released.
In other words, releasing button 2 in this scenario will print
"button 1 released"
*/
}
mouseReleased 이벤트 앞에 mousePressed 이벤트가 있으면 쉽지만, mouseDragged 앞에 있으면 getButton ()을 호출 할 수 없습니다 ...
- 답변 # 1
관련 자료
- html - 같은 그룹의 다른 라디오 버튼을 선택한 후 라디오 버튼을 재설정하는 방법
- visual studio - (vbnet) 다른 형태의 버튼을 클릭하면 sub를 종료하는 방법은 무엇입니까?
- php - 새로 고침 후 버튼이 활성화되는 이유는 무엇입니까?
- reactjs - js를 클릭하여 텍스트 영역에 "버튼 값"을 추가하는 방법
- javascript - 이미지를 마우스로 클릭하면 속도가 빨라지는 매끄러운 슬라이더
- ubuntu20.04 - 기본 버튼이 외부 마우스에서 기본값으로 돌아갑니다
- c# - 각각 TabControl에있는 3 개의 서로 다른 DataGrid에 Button을 바인딩합니다
- python - 어떤 사용자가 버튼을 눌렀는지 아는 방법
- excel - "X"버튼으로 두 번째 사용자 양식을 닫은 후 사용자 양식을 표시하는 방법 (이벤트 중단 코드 종료)
- android - 내 MainActivityjava에 탭하면 MapsActivityjava에 작성된 코드를 실행해야하는 버튼이 있습니다
- reactjs - 단일 함수를 버튼 클릭 한 후에 만 React Native에서 함수를 실행하려면 어떻게해야합니까?
- Python에서 Tkinter를 사용하여 버튼 클릭 후 이전 프레임으로 돌아가는 방법은 무엇입니까?
- java - 버튼을 누른 후 활동이 표시되지 않음, 버튼이있는 일회성 활동
- c++ - 마우스 클릭 후 확인란의 텍스트 색상 변경
- javascript - 머티리얼 테이블 반응에서 새 페이지 (클릭시)로 라우팅하는 데 도움이되는 버튼이있는 열 추가
- python - Tkinter에서 버튼을 클릭 한 후 라벨을 어떻게 업데이트합니까?
- c# - 클릭 후 버튼 숨기기
- 스냅 새로 고침 후 손/포인터 마우스 커서가 변경되었습니다 다시 변경하려면 어떻게합니까?
- macbook pro - Citrix 작업 공간 창 내에서 마우스 뒤로 버튼 동작 활성화
- ios - TextField의 공백 뒤에 자동으로 shift 버튼을 트리거합니다SwiftUI
트렌드
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- JavaScript 변수를 HTML div에 '출력'하는 방법
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- python - 화면에서 찾은 요소를 찾을 수없는 경우 셀레늄
와이즈 비즈
왜 안돼?
드래그가 멈춘 후 마우스 릴리스 상태를 원한다면, MouseAdapter에서 boolean 플래그를 사용하고 드래그 할 때 true로 설정하십시오. 다음과 같은 것 :
귀하의 질문을 완전히 오해하지 않는 한, 조금이라도 명확하게 해 줄 것을 요청합니다.
import java.awt.Dimension; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.*; public class MouseButtons extends JPanel { private static final int PREF_W = 800; private static final int PREF_H = 650; public MouseButtons() { MyMouseAdapter myMouse = new MyMouseAdapter(); addMouseListener(myMouse); addMouseMotionListener(myMouse); } @Override public Dimension getPreferredSize() { if (isPreferredSizeSet()) { return super.getPreferredSize(); } return new Dimension(PREF_W, PREF_H); } private class MyMouseAdapter extends MouseAdapter { private boolean dragging = false; @Override public void mousePressed(MouseEvent e) { } @Override public void mouseReleased(MouseEvent e) { String text = ""; int button = e.getButton(); if (button == MouseEvent.BUTTON1) { text = "Button 1"; } else if (button == MouseEvent.BUTTON2) { text = "Button 2"; } else if (button == MouseEvent.BUTTON3) { text = "Button 3"; } if (dragging) { System.out.println(text + " just finished dragging"); } else { System.out.println(text + " not recently dragging"); } dragging = false; } @Override public void mouseDragged(MouseEvent e) { dragging = true; } } private static void createAndShowGui() { JFrame frame = new JFrame("MouseButtons"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(new MouseButtons()); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(() -> createAndShowGui()); } }