爲什麼Java中的MouseEvents在鍵和鼠標按鈕之間共享修飾符?爲什麼Java中的所有中間點擊報告具有Alt修飾符?
考慮,下面的簡單代碼:
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(800,600);
frame.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
System.out.println(e);
}
});
frame.setVisible(true);
}
如果在窗口(一個左擊,一箇中間點擊,和一個右鍵),你會看到下面的輸出點擊三次。
java.awt.event.MouseEvent[MOUSE_CLICKED,(165,149),absolute(165,149),button=1,modifiers=Button1,clickCount=1] on frame0
java.awt.event.MouseEvent[MOUSE_CLICKED,(292,228),absolute(292,228),button=2,modifiers=Alt+Button2,clickCount=1] on frame0
java.awt.event.MouseEvent[MOUSE_CLICKED,(293,228),absolute(293,228),button=3,modifiers=Meta+Button3,clickCount=1] on frame0
如果你看看,你會發現,所有的中間點擊報告爲包含alt鍵下來,沒事的點擊報告爲包含Meta鍵下來。這是有據可查的,甚至有一條Javadocs的MouseEvent提到了這種重疊。但我的問題是,爲什麼這樣報道?從e.isAltDown()返回true以實現中間點擊的原因是什麼?
這使得在某些平臺上難以區分Alt + Button1和Button2。
同樣,是否有任何「最佳實踐」指南用於設計Java中的跨平臺鼠標行爲?
Macs。或者其他可能使用一鍵式鼠標的系統。 – GSP 2013-03-06 18:53:39