Swing - الكلاس JPopupMenu

Java Swing الكلاس JPopupMenu

مقدمة Swing - الكلاس JPopupMenu

الكلاس JPopupMenu يستخدم للحصول على قائمة منبثقة ( Popup Menu ) تظهر عند النقر على زر الفأرة الأيمن ( Right Click ).

ملاحظة: ليس بالضرورة أن تظهر القائمة فقط عند النقر على زر الفأرة الأيمن, لكن الأغلب يظهرها عند النقر على زر الفأرة الأيمن.


بنا Swing - الكلاس JPopupMenu

public class JPopupMenu
extends JComponent
implements Accessible, MenuElement
	

كونستركتورات الكلاس JPopupMenu

الجدول التالي يحتوي على كونستركتورات الكلاس JPopupMenu.

الكونستركتور مع تعريفه
public JPopupMenu() ينشئ كائن من الكلاس JPopupMenu يمثل Popup Menu فارغة, أي لا تحتوي أي عنصر.
لإضافة خيارات فيها نستخدم الدالة add().
public JPopupMenu(String label) ينشئ كائن من الكلاس JPopupMenu يمثل Popup Menu فارغة لها عنوان.
لإضافة خيارات فيها نستخدم الدالة add().
مكان الباراميتر label نضع نص يمثل العنوان الذي سيظهر في أعلا الـ Popup Menu.

ملاحظة: في حال لم يظهر العنوان الذي وضعته لا تظن أن المشكلة في الكود, المشكلة قد تكون أن الـ Theme المستخدم لا يدعم إظهار عنوان لها.

دوال الكلاس JPopupMenu

الجدول التالي يحتوي على بعض دوال الكلاس JPopupMenu.

الدالة مع تعريفها
public JMenuItem add(String item) تستخدم لإضافة عنصر جديد في آخر كائن الـ JPopupMenu الذي قام بإستدعائها ثم ترجع نسخة منه.
مكان الباراميتر item نضع نص العنصر الذي سيضاف.
public JMenuItem add(JMenuItem item) تستخدم لإضافة عنصر جديد في آخر كائن الـ JPopupMenu الذي قام بإستدعائها ثم ترجع نسخة منه.
مكان الباراميتر item نضع كائن من الكلاس JMenuItem أو من إحدى الكلاسات التي ترث منه, يمثل العنصر الذي سيضاف.

الكلاسات التي ترث من الكلاس JMenuItem هي التالية:
  • JMenu: يستخدم لوضع قائمة داخلية في الـ Popup Menu.

  • JCheckBoxMenuItem: يستخدم لوضع Check Box في الـ Popup Menu.

  • JRadioButtonMenuItem: يستخدم لوضع Radio Button في الـ Popup Menu.

public void addSeparator() تستخدم لإضافة خط فاصل في كائن الـ JPopupMenu.
ترمي الإستثناء IllegalArgumentException في حال كان كائن الـ JPopupMenu الذي قام بإستدعائها فارغاً.
public void show(Component invoker, int x, int y) تستخدم لإظهار الـ Popup Menu في الموقع الذي تم تحديده.

  • مكان الباراميتر invoker نضع إسم الكائن الذي سيستدعي الـ Popup Menu.

  • مكان الباراميتر x نضع رقم يمثل بعد الـ Popup Menu أفقياً عن الـ invoker.

  • مكان الباراميتر y نضع رقم يمثل بعد الـ Popup Menu عامودياً عن الـ invoker.

 طريقة إظهار قائمة JPopupMenu عند النقر على زر الفأرة الأيمن

المثال التالي يعلمك طريقة إنشاء قائمة ( Popup Menu ) تظهر عند النقر على زر الفأرة الأيمن ( Right Click ).
هذه القائمة تسمح للمستخدم بأن يقوم بنسخ, قص, لصق و تحديد المحتوى.


مثال طريقة إنشاء قائمة Popup Menu ) تظهر عند النقر على زر الفأرة الأيمن Right Click ).

Main.java
					import java.awt.event.ActionEvent;
					import java.awt.event.ActionListener;
					import java.awt.event.MouseAdapter;
					import java.awt.event.MouseEvent;
					import javax.swing.JFrame;
					import javax.swing.JPopupMenu;
					import javax.swing.JMenuItem;
					import javax.swing.JScrollPane;
					import javax.swing.JTextArea;
					import javax.swing.SwingUtilities;

					public class Main {

					public static void main(String[] args) {

					JFrame frame = new JFrame("JPopupMenu demo");              // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس
					frame.setSize(400, 300);                                 // هنا قمنا بتحديد حجم النافذة. عرضها 400 و طولها 300
					frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    // هنا جعلنا زر الخروج من النافذة يغلق البرنامج

					// الحاجة Scroll Bar لتظهر ScrollPane و وضعناها بداخل Text Area هنا قمنا بتعريف
					JTextArea textArea = new JTextArea();
					JScrollPane textAreaScroller = new JScrollPane(textArea);

					// و الذي يمثل قائمة منبثقة JPopupMenu هنا قمنا بتعريف كائن من الكلاس
					JPopupMenu popupMenu = new JPopupMenu();

					// هنا قمنا بتعريف العناصر التي سنضعها في القائمة
					JMenuItem cut = new JMenuItem("Cut");
					JMenuItem copy = new JMenuItem("Copy");
					JMenuItem paste = new JMenuItem("Paste");
					JMenuItem selectAll = new JMenuItem("Select All");

					// في القائمة المنبثقة select و paste ,copy ,cut هنا قمنا بوضع العناصر
					popupMenu.add(cut);
					popupMenu.add(copy);
					popupMenu.add(paste);
					popupMenu.addSeparator(); // هنا أضفا خط فاصل
					popupMenu.add(selectAll);

					// و بالتالي ربطنا بها textArea هنا وضعنا القائمة المنبثقة في الـ
					textArea.add(popupMenu);

					// frame في الـ textAreaScroller هنا قمنا بوضع الـ
					frame.add(textAreaScroller);


					// في القائمة cut هنا نضع الأوامر التي ستنفذ عند النقر على العنصر
					cut.addActionListener(new ActionListener(){
					@Override
					public void actionPerformed(ActionEvent e) {
					// هنا قلنا أنه سيتم قص المحتوى الذي قام المستخدم بتحديده
					textArea.cut();
					}
					});

					// في القائمة copy هنا نضع الأوامر التي ستنفذ عند النقر على العنصر
					copy.addActionListener(new ActionListener(){
					@Override
					public void actionPerformed(ActionEvent e) {
					// هنا قلنا أنه سيتم نسخ المحتوى الذي قام المستخدم بتحديده
					textArea.copy();
					}
					});

					// في القائمة paste هنا نضع الأوامر التي ستنفذ عند النقر على العنصر
					paste.addActionListener(new ActionListener(){
					@Override
					public void actionPerformed(ActionEvent e) {
					// هنا قلنا أنه سيتم لصق المحتوى الذي قام المستخدم بقصه أو نسخه
					textArea.paste();
					}
					});

					// في القائمة selectAll هنا نضع الأوامر التي ستنفذ عند النقر على العنصر
					selectAll.addActionListener(new ActionListener(){
					@Override
					public void actionPerformed(ActionEvent e) {
					// Text Area هنا قلنا أنه سيتم تحديد كامل محتوى الـ
					textArea.selectAll();
					}
					});

					// textArea هنا نضع الأوامر التي ستنفذ عند النقر على الـ
					textArea.addMouseListener(new MouseAdapter(){
					@Override
					public void mouseClicked(MouseEvent e) {
					// إذا قام المستخدم بالنقر على زر الفأرة الأيمن سيتم إظهار القائمة في المكان الذي نقر فيه
					if( SwingUtilities.isRightMouseButton(e) )
                    popupMenu.show(textArea, e.getX(), e.getY());
					}
					});

					// مرئية frame هنا جعلنا الـ
					frame.setVisible(true);

					}

					}
				  

ستظهر لك النافذة التالية عند التشغيل.

لإظهار القائمة, أنقر بزر الفأرة الأيمن على أي مكان في الـ Text Area.

طريقة إظهار قائمة JPopupMenu عند النقر على زر الفأرة الأيمن في جافا

دورة تعلم الجافا Swing