2009-06-16 92 views
0

我有一個微小的(rikiki)在SWT問題...鍵修改狀態

我提出延長org.eclipse.swt.widgets.Composite和小類應該被嵌套在RCP應用...

在這種小班我有,這是爲了給鼠標或鍵盤事件作出反應部件

我需要使用組合鍵(Shift鍵/按Ctrl/ALT/...),以改變我的coponents行爲,當我點擊他們或給他們的鍵盤事件...

的probleme是,我不能只聽對於MOD鍵驚人的,因爲我的用戶可以從我的組件越打越出來,然後點擊它...

我不能使用的顯示過濾器,以避免令人不安的是,我的嵌套組件的外殼。(但可能是它如果沒有其他解決方案,將是我的最後解決方案

我不能製作一個透明的組件來讀取和發送事件給我的所有組件,因爲它最多隻能和我的組件一樣大,並且不會從我的組件(或者甚至不支持)從殼)...

有沒有人有任何想法?

+0

發現哦關於國家面具的東西...我會搜索更多關於那^^ – Ar3s 2009-06-16 15:33:50

回答

3

或多或少它就像

myComponent.add<Any>Listener(new <Appropriate>Listener(){ 
    @Override 
    public void <AppropriateMethod>(like KeyPress)>(<Appropriate>Event e) { 
     int stateMask=e.stateMask; 
     if((stateMask & SWT.ALT)==SWT.ALT){ 
      <Do_appropriate_actions>; 
     } 
     if((stateMask & SWT.CTRL)==SWT.CTRL){ 
      <Do_another_appropriate_actions>; 
     } 
     if((stateMask & SWT.SHIFT)==SWT.SHIFT){ 
      <Do_an_even_more_appropriate_actions_cause_you_are_kind_of_a_code_roxxor_!>; 
     } 
    }; 
};

希望它可以幫助...

1

嘗試這些方針的東西來捕獲所有按鍵和保存以備:

Display.getDefault().addFilter(SWT.KeyDown, new Listener() { 

     public void handleEvent(Event passedEvent) { 
      //Listen for and store as static var last pressed keycode 
      System.out.println("Key Event: " + passedEvent); 
     } 
    }); 
+0

是的,但它捕獲所有的按鍵,即使是不必要的... 我的狀態e-Mask方法(在觸發另一個事件時按下修飾鍵)更簡單^^(至少在我的情況下) – Ar3s 2009-06-24 08:44:09