سؤال

لدي فئة رئيسية في برنامج تطلق فئة أخرى تتعامل مع جميع الأشياء واجهة المستخدم الرسومية. في واجهة المستخدم الرسومية، لدي زر أحتاج إلى إرفاق ActionListener إلى.

المشكلة الوحيدة هي، يجب تنفيذ التعليمات البرمجية التي يجب تنفيذها داخل الفئة الرئيسية.

كيف يمكنني الحصول على طريقة actionperformed () لتنفيذ الفئة الرئيسية عند النقر فوق زر في مكان آخر؟

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

المحلول

اجعل وحدة التحكم الخاصة بك (فئة "الرئيسية") تنفيذ واجهة ActionListener، ثم تمرير مرجع إلى فئة العرض:

public class View extends JFrame {
  public View(final ActionListener listener) {
   JButton button = new JButton("click me");
   button.addActionListener(listener);
   button.setActionCommand("do_stuff");

   getContentPane().add(button);

   pack();
   setVisible(true);
  }
 }

 public class Control implements ActionListener {

  public Control() {
   new View(this);
  }

  @Override
  public void actionPerformed(ActionEvent e) {
   if (e.getActionCommand().equals("do_stuff")) {
    // respond to button click
   }
  }
 }

يمكن أيضا القيام به أجراءات, ، ولكن هذا أكثر فائدة حيث تريد قطعة واحدة من التعليمات البرمجية للرد على العديد من الأزرار.

نصائح أخرى

قم بتنفيذ فئة دخيرة مجهولة كما ActionListener على الزر، ثم اتصل بالطريقة على الفصل الرئيسي. يؤدي هذا إلى إنشاء تبعيات أقل وتجنب برمجة TAG & Switch STYLE التي تنفذ واجهة ActionListener على الطبقة الرئيسية تميل إلى الترويج.

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

قم بتنفيذ ActionListener في صفك الرئيسي وإضافة مثيل الفصل الرئيسي كمستمع على زر واجهة المستخدم الرسومية.

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