BUTTON1_MASK
là mặt nạ cho biết sự kiện đến từ nút 1. BUTTON1_DOWN_MASK
tương tự về mặt khái niệm, nhưng là mở rộng phiên bản của hằng số đó.
Có hai phương pháp mà trở về bộ như các hằng số: InputEvent#getModifiers()
và InputEvent#getModifiersEx()
, và họ sẽ trở lại hằng modifier, hoặc mở rộng hằng modifier, tương ứng.
From the docs (bold is mine):
Nút mặt nạ được trả về bởi InputEvent.getModifiers() chỉ phản ánh nút làm thay đổi trạng thái, không phải là hiện trạng thái của tất cả các nút ... Để có được trạng thái của tất cả các các nút và công cụ sửa đổi , sử dụng InputEvent.getModifiersEx().
and also (bold is mine): bổ
Extended đại diện cho nhà nước của tất cả các phím đa phương thức, chẳng hạn như ALT, CTRL, META, và các nút chuột chỉ sau sự kiện này xảy ra
Ví dụ: nếu người dùng nhấn nút 1 theo sau là nút 2 và thì giải phóng chúng theo cùng một thứ tự, chuỗi sự kiện sau đây.210 được tạo ra:
MOUSE_PRESSED: BUTTON1_DOWN_MASK
MOUSE_PRESSED: BUTTON1_DOWN_MASK | BUTTON2_DOWN_MASK
MOUSE_RELEASED: BUTTON2_DOWN_MASK
MOUSE_CLICKED: BUTTON2_DOWN_MASK
MOUSE_RELEASED:
MOUSE_CLICKED:
Nếu tất cả các bạn muốn là để phát hiện một nút 1 (bình thường, trái) nhấp chuột, sau đó một trong những nên làm việc:
if ((e.getModifiers() & MouseEvent.BUTTON1_MASK) != 0) {
System.out.println("BUTTON1_MASK");
}
if ((e.getModifiersEx() & MouseEvent.BUTTON1_DOWN_MASK) != 0) {
System.out.println("BUTTON1_DOWN_MASK");
}
Ngoài ra, bạn có thể kiểm tra phiên bản nguồn mở này của InputEvent
, which has some more useful comments, and shows what's happening inside
Đã lâu rồi nhưng bất cứ ai đọc nội dung này: tại sao mã của bạn lại có ký hiệu đơn? ví dụ: e.getModifiers() & MouseEvent.BUTTON1_MASK. Đó có phải là đại diện cho giao lộ được thiết lập không? – user2316667
@ user2316667, đó là vì 'getModifiers()' và [getModifiersEx()] (http://docs.oracle.com/javase/7/docs/api/java/awt/event/InputEvent.html#getModifiersEx%28 % 29) phương thức trả về một số nguyên, có thể chứa một * kết hợp * của cờ. Để kiểm tra cho bất kỳ ** một ** cờ cụ thể nào trong một số nguyên, bạn sử dụng toán tử '&' để xem bit cụ thể đó có phải là nonzero hay không (đó là nơi '! = 0' xuất phát từ). Vì vậy, nếu bit Button1 là những gì bạn quan tâm, bạn kiểm tra với một mặt nạ như 'e.getModifiers() & BUTTON1_MASK! = 0'. Đây không phải là toán tử boolean '&&' ... đó là một cái gì đó khác. – Nate
[Xem hướng dẫn này để biết thêm] (http://www.tutorialspoint.com/java/java_bitwise_operators_examples.htm) về các toán tử như "bitwise AND". – Nate