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 هي التالية:
|
|
public void addSeparator()
تستخدم لإضافة خط فاصل في كائن الـ JPopupMenu .ترمي الإستثناء IllegalArgumentException في حال كان كائن الـ JPopupMenu الذي قام بإستدعائها فارغاً. |
|
public void show(Component invoker, int x, int y)
تستخدم لإظهار الـ Popup Menu في الموقع الذي تم تحديده.
|
طريقة إظهار قائمة JPopupMenu
عند النقر على زر الفأرة الأيمن
المثال التالي يعلمك طريقة إنشاء قائمة ( Popup Menu ) تظهر عند النقر على زر الفأرة الأيمن ( Right Click ).
هذه القائمة تسمح للمستخدم بأن يقوم بنسخ, قص, لصق و تحديد المحتوى.
مثال طريقة إنشاء قائمة ( Popup Menu ) تظهر عند النقر على زر الفأرة الأيمن ( Right Click ).
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.
دورة تعلم الجافا Swing