الوصول إلى "مجهول" Jbutton في فئة مجهولة من الدرجة مجهول آخر؟

StackOverflow https://stackoverflow.com/questions/286651

سؤال

وأنا خلقت 26 JButton في actionListener مجهول وصفت بأنها كل حرف من الأبجدية.

for (int i = 65; i < 91; i++){
    final char c = (char)i;
    final JButton button = new JButton("" + c);
    alphabetPanel.add(button);
    button.addActionListener(
        new ActionListener () {
            public void actionPerformed(ActionEvent e) {
                letterGuessed( c );
                alphabetPanel.remove(button);
            }
        });
        // set the name of the button
        button.setName(c + "");
} 

والآن لدي فئة keyListener مجهولة، حيث أود أن تعطيل زر القائمة على الخروج من الذي إلكتروني تم الضغط على لوحة المفاتيح. حتى إذا يضغط المستخدم A، ثم يتم تعطيل الزر A . هل هذا ممكن حتى بعد تنفيذها بلدي الحالي؟

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

المحلول

هل يمكن أن ليس مجرد إعلان مجموعة من 26 الأشياء JButton على مستوى الدرجة، بحيث أن كلا من المستمعين يمكن الوصول إليها؟ أعتقد أن الطبقات الداخلية مجهول الوصول المتغيرات فئة وكذلك المتغيرات النهائية.

نصائح أخرى

وأنا لا أعرف ما إذا كنت ترغب في تعطيل زر أو هل تريد إزالته؟ في كنت رمز كنت أنت تدعو إزالة وفي إجابتك كنت تتحدث عن تعطيل. هل يمكن تحقيق ذلك من خلال إضافة KeyListener إلى alphabetPanel. لذلك يمكن أن تضيف هذه فقط قبل بدء لحلقة:

InputMap iMap = alphabetPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
ActionMap aMap = alphabetPanel.getActionMap();

وبدلا من ActionListener الخاص تضاف إلى JButton نسمي هذا:

iMap.put(KeyStroke.getKeyStroke(c), "remove"+c);
aMap.put("remove"+c, new AbstractAction(){
    public void actionPerformed(ActionEvent e) {
        // if you want to remove the button use the following two lines
        alphabetPanel.remove(button);
        alphabetPanel.revalidate();
        // if you just want to disable the button use the following line
        button.setEnabled(false);
    }
});

ويمكنك أيضا تكرار خلال المكونات، مقارنة getText () إلى مفتاح الضغط عليه.

وكما ذكر شخص آخر، يمكن فصول مجهولة أيضا الوصول إلى أفراد الطبقة الخارجية وكذلك نهائيات المحلية

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