در این قسمت تیم کدگیت را با آموزش JPopupMenu در جاوا همراهی کنید. ابتدای آموزش توضیح کوتاهی در مورد JPopupMenu خواهیم داد سپس با زدن مثالی واقعی این مسئله را پیاده سازی خواهیم کرد. همچنین پیشنهاد میشود قبل از مطالعه این جلسه، آموزشهای گذشته گرافیک در جاوا را مطالعه کنید.
JPopupMenu در جاوا
JPopupMenu برای نمایش پاپ آپ به صورت پویا در صفحه به کار میرود. این کلاس از کلاس JComponent ارث بری میکند. این کلاس شامل دو متد Constructor میباشد:
- ()JPopupMenu: ساخت شی پاپ آپ بدون نام.
- (JPopupMenu(String Title: ساخت شی پاپ آپ با نام دلخواه.
در تصویر زیر پاپ آپی در صفحه با سه گزینه copy، paste و cut میبینید.

مثال JPopupMenu در جاوا
در این قسمت قصد داریم برنامهای مشابه تصویر بالا را پیاده سازی کنیم. همانطور که میبینید یک JLable و یک JPopupMenu در Frame وجود دارد. نکته دیگر برنامه کلیک بر روی آیتمهای پاپ آپ است. برنامه باید طوری باشد که با کلیک بر روی هر کدام از آیتمها، متن JLable ما عوض شود. کد پیاده سازی این برنامه به صورت زیر میباشد:
class PopupMenuExample {
PopupMenuExample() {
final JFrame f = new JFrame("PopupMenu Example");
final JLabel label = new JLabel();
label.setHorizontalAlignment(JLabel.CENTER);
label.setSize(400, 100);
final JPopupMenu popupmenu = new JPopupMenu("Edit");
JMenuItem cut = new JMenuItem("Cut");
JMenuItem copy = new JMenuItem("Copy");
JMenuItem paste = new JMenuItem("Paste");
popupmenu.add(cut);
popupmenu.add(copy);
popupmenu.add(paste);
f.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
popupmenu.show(f, e.getX(), e.getY());
}
});
cut.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
label.setText("cut MenuItem clicked.");
}
});
copy.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
label.setText("copy MenuItem clicked.");
}
});
paste.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
label.setText("paste MenuItem clicked.");
}
});
f.add(label);
f.add(popupmenu);
f.setSize(400, 400);
f.setLayout(null);
f.setVisible(true);
}
public static void main(String args[]) {
new PopupMenuExample();
}
}
در کد بالا پس از ساخت شی JPopupMenu، سه شی از کلاس JMenuItem ساختیم. برای هر یک از JMenuItem یک Listener نوشته تا هنگام کلیک متن نوشته Lable ما را عوض کند. همچنین تمامی JMenuItem به شی JPopupMenu اضافه کردیم. به عنوان آخرین نکته در کد بالا برای Frame یک Listener نوشتیم برای نمایش پاپ آپ، بدین صورت که کاربر هر موقع در هر جای صفحه کلیک کند، در آن نقطه پاپ آپ نمایش داده میشود.