2012-11-02 56 views
0

我在框架上有一些組件,我需要它在右按鈕單擊時作出響應。我必須使用我自己的事件。我應該延長MouseEvent嗎?我如何在我的活動中將右鍵單擊與其他人分開?爲右鍵單擊創建我自己的事件

+0

我試過創建我自己的類(它需要通過任務)。但我完全誤導了。首先,我試圖創建擴展EventObject的類,但我不知道如何使它成爲完全右鍵單擊事件。比我想擴展MouseEvent,但我仍然無法想象如何以適當的方式做到這一點。我提醒你我必須創建自己的事件類,而不僅僅是使用java.awt.event.MouseEvent。 – Valaquil

回答

6

不,你不會擴展 MouseEvent,而你會使用 MouseEvent。

如果這是一個Swing GUI,您可以爲組件添加一個MouseListener,然後在MouseListener的mousePressed方法中獲取傳入該方法的MouseEvent對象,獲取其modifiersEx,然後檢查是否按下了右鍵單擊:

public void mousePressed(MouseEvent mEvt) { 
    if ((mEvt.getModifiersEx() & MouseEvent.BUTTON3_DOWN_MASK) != 0) { 
     // right button has been pressed 
    } 
} 
+0

是的,謝謝。我知道解決我的問題的方式,我同意它不需要創建自定義事件,但任務不是使用Java的MouseEvent,而是創建自定義事件。 – Valaquil

5

MouseEvent類有一個方法,允許您檢查使用了哪個鼠標按鈕。這就是所謂的getButton並返回一個值int,你可以比較的predefined values

一個最重要的是,有一個方便的類叫做SwingUtilities,其在使用這些領域提供了一個抽象層很好。這裏有一個方法,你會發現特別有趣:isRightMouseButton

換句話說,你不需要創建自己的MouseEvent,一個MouseListener實現就足夠了。這是內聯實現的一個例子,排除了不相關的細節。

new MouseListener(){ 

     @Override 
     public void mouseClicked(MouseEvent e) { 
      if(SwingUtilities.isRightMouseButton(e)){ 
       //do what you want on right click 
      } 
     } 
     // other methods required by the interface 

    };