2009-06-16 11 views
0

Ich habe ein winziges (rikiki) Problem in SWT ...Modifier Key Zustand

Ich bin eine kleine Klasse machen org.eclipse.swt.widgets.Composite erstreckt und das soll verschachtelt werden in einer RCP App ...

in dieser kleinen Klasse-I-Widgets haben, die Maus oder Tastatur-Ereignis

ABER

reagieren sollen 0

Ich brauche Zusatztasten zu verwenden (Shift/Strg/Alt/...) mein coponents Verhalten zu ändern, wenn ich sie klicken oder sie Tastaturereignis senden ...

Die Probleme ist, dass ich nicht nur hören können für mod-Schlüssel auffällig, weil mein Benutzer kann es aus meiner Komponente streichen und es dann auf ...

ich nicht einen Anzeigefilter nicht zu stören die Schale, die meine Komponente Nester verwenden können. (aber kann es sein, wird meine letzte Lösung sein, falls es keine andere Lösung gibt)

Ich kann keine transparente Komponente erstellen, die Ereignisse an alle meine Komponenten liest und versendet, weil sie höchstens so groß wie meine Komponente wäre und nicht von der Shell aus meine Komponente (oder sogar out aus der Shell) ...

Hat jemand eine Idee?

+0

Oh gefunden etwas über State Masks ... ich werde mehr darüber suchen ^^ – Ar3s

Antwort

3

Mehr oder weniger ist es wie

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_!>; 
     } 
    }; 
};

Hoffe, es hilft ...

1

etwas in dieser Richtung versuchen, alle Schlüssel zu erfassen und sie für später speichern:

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

Ja, aber es erfasst alle Tasten drücken, auch die un-notwendigen ... Mein Stat Die e-Mask-Methode (die De-Modifikatortaste gedrückt zu bekommen, wenn Sie ein anderes Ereignis auslösen) ist viel einfacher ^^ (in meinem Fall zumindest) – Ar3s

+0

Der Vollständigkeit halber könnten Sie Ihre Methode/Lösung auch auf diese Frage stellen? Vielen Dank – fisherja

Verwandte Themen