سؤال

وعندما خلق بضعة أزرار (new Button(parent, SWT.RADIO)) وتعيين التحديد برمجيا باستخدام radioButton5.setSelection(true) زر الراديو المحددة سابقا أيضا يبقى المحدد. هل يجب تكرار على جميع أزرار أخرى من نفس المجموعة لإلغاء تحديد لهم أم أن هناك بديل أبسط؟ يرجع الفضل في ذلك مسبقا.

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

المحلول

ومما يؤسف له، عليك أن أعاد على كل الخيارات. لأول مرة عندما يأتي UI الخاص بك ثم يتم تشغيل الحدث BN_CLICKED. إذا لم يتم إنشاء Shell أو Group أو أي حاوية من أزرار الراديو مع خيار SWT.NO_RADIO_GROUP ثم يتم استدعاء الأسلوب التالي:

void selectRadio () 
{
    Control [] children = parent._getChildren ();
    for (int i=0; i<children.length; i++) {
        Control child = children [i];
        if (this != child) child.setRadioSelection (false);
    }
    setSelection (true);
}

وكسوف ذلك أساسا نفسه يعتمد على بالتكرار عبر كافة أزرار وتبديل دولتهم.

وفي كل مرة يدويا حدد زر الراديو يتم تشغيل الحدث BN_CLICKED وبالتالي تبديل السيارات.

عند استخدام button.setSelection(boolean) ثم يتم تشغيل أي حال من BN_CLICKED. تبديل بالتالي لا التلقائي للأزرار.

وتحقق من الدرجة org.eclipse.swt.widgets.Button لمزيد من التفاصيل.

نصائح أخرى

وأزرار الراديو في نفس المركب ستعمل كمجموعة. وسيتم اختيار زر واحد فقط في المرة الواحدة. هنا هو مثال العمل:

    Composite composite = new Composite(parent, SWT.NONE);

    Button btnCopy = new Button(composite, SWT.RADIO);
    btnCopy.setText("Copy Element");
    btnCopy.setSelection(false);

    Button btnMove = new Button(composite, SWT.RADIO);
    btnMove.setText("Move Element");

وهذا يجب أن يحدث تلقائيا. كيف يتم خلق لكم أزرار؟ هل هم على نفس الأم؟ هي الأم باستخدام أسلوب NO_RADIO_GROUP؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top