サンプル
PopupMenuSample.java
import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPopupMenu; public class PopupMenuSample extends JFrame implements MouseListener, ActionListener { private static final long serialVersionUID = 1L; public static void main(String[] args) { PopupMenuSample sample = new PopupMenuSample(); sample.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); sample.setBounds(10, 10, 300, 200); sample.setVisible(true); } private JPopupMenu popup; private JMenuItem copyMenuItem; private JMenuItem pasteMenuItem; public PopupMenuSample() { JButton button = new JButton("button"); button.addMouseListener(this); JPanel panel = new JPanel(); panel.add(button); this.popup = new JPopupMenu(); this.copyMenuItem = new JMenuItem("コピー"); this.pasteMenuItem = new JMenuItem("ペースト"); this.copyMenuItem.addActionListener(this); this.pasteMenuItem.addActionListener(this); this.popup.add(this.copyMenuItem); this.popup.add(this.pasteMenuItem); getContentPane().add(panel, BorderLayout.CENTER); } @Override public void mouseClicked(MouseEvent e) { // Do nothing } @Override public void mousePressed(MouseEvent e) { this.showPopup(e); } @Override public void mouseReleased(MouseEvent e) { this.showPopup(e); } @Override public void mouseEntered(MouseEvent e) { // Do nothing } @Override public void mouseExited(MouseEvent e) { // Do nothing } private void showPopup(MouseEvent event) { if (event.isPopupTrigger()) { this.popup.show(event.getComponent(), event.getX(), event.getY()); } } @Override public void actionPerformed(ActionEvent actionEvent) { Object control = actionEvent.getSource(); if (control == this.copyMenuItem) { JOptionPane.showMessageDialog(this, "Press Copy", "Info", JOptionPane.INFORMATION_MESSAGE); } else if (control == this.pasteMenuItem) { JOptionPane.showMessageDialog(this, "Press Paste", "Info", JOptionPane.INFORMATION_MESSAGE); } } }
参考文献
http://www.javadrive.jp/tutorial/jpopupmenu/http://www.atmarkit.co.jp/ait/articles/0504/13/news102.html
http://java409.web.fc2.com/right_click.htm