الوصول إلى "مجهول" Jbutton في فئة مجهولة من الدرجة مجهول آخر؟
-
08-07-2019 - |
سؤال
وأنا خلقت 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 () إلى مفتاح الضغط عليه.
وكما ذكر شخص آخر، يمكن فصول مجهولة أيضا الوصول إلى أفراد الطبقة الخارجية وكذلك نهائيات المحلية