Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Learn Typing

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);
}
}
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 عند النقر على زر الفأرة الأيمن في جافا