Swingطريقة إظهار قائمة JPopupMenu عند النقر على زر الفأرة الأيمن
المثال التالي يعلمك طريقة إنشاء قائمة ( 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);
}
}
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.