سؤال

وكيف يمكنني الكشف عند تغيير JRadioButton من "غير محددة" إلى "اختيار" عند النقر عليها بالماوس؟ لقد حاولت استخدام ActionListener على زر، ولكن هذا يحصل أطلقت في كل مرة يتم النقر على زر راديو، وليس فقط عندما يكون تغيير الدولة إلى "المختارة".

ولقد فكرت في الحفاظ على متغير منطقية أن يتذكر حالة زر، واختباره داخل ActionListener لمعرفة ما إذا كان لتغيير حالته لكني أتساءل عما اذا كان هناك حل أفضل بكثير أو أكثر نظافة.

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

المحلول

وانظروا JRadioButton. <وأ href = "http://docs.oracle.com/javase/6/docs/api/javax/swing/AbstractButton.html#addItemListener٪28java.awt.event.ItemListener٪29" يختلط = "noreferrer"> addItemListener ()

وتحرير: ومن غير المرجح تريد استخدام changeListener كما انها تطلق عدة مرات كل نقرة. وitemListener يطلق مرة واحدة فقط كل نقرة. انظر هنا

وEDIT2: فقط للتوسع في هذا، سيقوم actionListener على jradioButton النار في كل مرة ينقر مستخدم على ذلك، حتى إذا تم تحديد بالفعل. اذا كان هذا ما تريد، ودفع غرامة، ولكن أجد أنه مزعج. أريد فقط أن يتم إعلامك أنه يتم تحديده أو إلغاء تحديد.

وA ChangeListener سوف النار لجميع أنواع الأشياء، وهذا يعني المستمع تتلقاها 5 أو أكثر من الأحداث كل نقرة. ليست جيدة.

وهناك itemlistener سوف إطلاق <م> فقط إذا تغير الحالة المحددة أو إلغاء تحديد. هذا يعني أنه يمكن للمستخدم النقر عليه عدة مرات، وسوف يتم إطلاق اذا لم يتغير. في أسلوب معالج الخاص بك وسوف يكون لديك كتلة if التحقق من SELECTED أو DESELECTED الوضع والقيام بكل ما هناك:

@Override
public void itemStateChanged(ItemEvent e) {
    if (e.getStateChange() == ItemEvent.SELECTED) {
        // Your selected code here.
    }
    else if (e.getStateChange() == ItemEvent.DESELECTED) {
        // Your deselected code here.
    }
}

وانها تعمل فقط أفضل لأنك تعرف أنه إذا كنت في طريقة ذلك الحين إما فقط تم اختيار زر الاختيار أو إلغاء تحديد، لا أن المستخدم هو مجرد يقرعون اجهة لسبب غير معروف.

نصائح أخرى

وأعتقد أنك تريد إضافة تنفيذ ChangeListener.

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