الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤالل عن Jpanel

بدأه omar_cplusplus في 12 أبريل 2008 · 1 رد · 705 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته

سؤال عن الJPanel ......

هل يمكن عمل class يورث JPanel ثم أعمل له object في الclass الرئيسي و أقول

object.addActionListener(this);

أم أن هذا لا ينفع مع الJPanel و يحتاج إلى إجراءات آخرى ؟؟؟

و هل كل الأدوات الموجودة في الجافا مثل الJButton و JLabel و غيرهما قد ورثوا JPanel بحيث يمكن لي أن أعمل override لpaintComponent و أرسم فوق الزر مثلاً ؟؟؟

#2

و عليكم السلام

1

نعم يمكنك عمل class يورث JPanel ثم تعمل له object في الclass الرئيسي و لكن لا يمكنك أن تقول

object.addActionListener(this);

لأن JPanel لا تحقق (implement) الواجهة ActionListener ..

في الكود التالي :

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;

public class Main implements ActionListener{

	PP pp;

	public Main(){
		pp = new PP();
		pp.addActionListener(this);
	}

	public void actionPerformed(ActionEvent e){
		// ...
	}
}

class PP extends JPanel{

	public PP(){
		super();
	}				
}

ستحصل على رسالة الخطأ التالية :

The method addActionListener(Main) is undefined for the type PP

السبب هو كما قلت أن JPanel (و بالتالي جميع ورثتها) لا تحقق الواجهة ActionListener ..

بالعربي : JPanel لا تصدر عنها أفعال Actions مثل JButton و JComboBox ... الخ .

http://java.sun.com/docs/books/tutorial/ui...nents.html#many

2

JButton و JLabel لا ترث JPanel و لكنها ترث JComponent و بالتالي يمكنك استخدام paintComponents و لكنني لم أقم بتجريبها ..

انظر هرمية التوريث لهذه الكائنات هنا :

JPanel

JComponent

JLabel

JButton

تم تعديل هذه المشاركة بواسطة أبو خالد السوري في 12 أبريل 2008 في 13:24

أبو خالد السوري

مواضيع مشابهة