سؤال

لدي صغيرة (rikiki) المشكلة في ع ...

أنا جعل فئة صغيرة تمتد org.الكسوف.سبحانه وتعالى.الحاجيات.مركب والتي من المفترض أن تكون متداخلة في RCP التطبيق ...

في هذه الطبقة الصغيرة لدي الحاجيات التي يفترض أن تتفاعل مع الماوس أو لوحة المفاتيح الحدث

ولكن

أنا بحاجة إلى استخدام مفاتيح التعديل (التحول/Ctrl Alt/...) لتغيير بلدي coponents السلوك عند النقر عليها أو إرسالها لوحة المفاتيح الحدث ...

على probleme هو أنني لا يمكن فقط الاستماع وزارة الدفاع-الرئيسية ضرب لأن المستخدم يمكن أن يشطب من العنصر ثم انقر فوق ذلك...

أنا لا يمكن استخدام عامل تصفية عرض لتجنب إزعاج شل أن أعشاش بلدي مكون.(ولكن قد يكون هذا سوف يكون آخر حل في حالة عدم وجود حل آخر)

أنا لا يمكن أن تجعل شفاف مكون يقرأ إرسال الأحداث إلى جميع مكونات لأنها في الغالب تكون كبيرة مثل بلدي مكون و لن تحصل على وزارة الدفاع-الرئيسية الضربات من قذيفة خارج بلدي مكون (أو حتى الخروج من قذيفة) ...

هل لدى أحدكم أي فكرة ؟

هل كانت مفيدة؟

المحلول

أكثر أو أقل مثل

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

آمل أن يساعد ...

نصائح أخرى

محاولة شيء على طول هذه الخطوط إلى التقاط جميع المفاتيح وحفظها في وقت لاحق:

    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 );
        }
    } );

يمكنك اختبار مفاتيح التعديل باستخدام الطريقة التالية:

/**
 * Key code of pressed modifier key.
 *
 * @param keyEvent the received key event
 * @return the key code or 0 if no modifier key is pressed
 */
private static int getModifierKeyCode(KeyEvent keyEvent) {
    return (keyEvent.stateMask & SWT.MODIFIER_MASK);
}

على سبيل المثال المكالمات:

item.addKeyListener(new KeyAdapter() {
    @Override
    public void keyPressed(KeyEvent keyEvent) {
        if(getModifierKeyCode(keyEvent) == SWT.CTRL && keyEvent.keyCode == 'f') { // CTRL + F
            // do something
        )
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top