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

المثال التالي يعلمك طريقة إنشاء قائمة ( 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 عند النقر على زر الفأرة الأيمن في جافا

الدورات

أدوات مساعدة

أقسام الموقع

دورات
مقالات كتب مشاريع أسئلة