Dalam tutorial ini, saya mencoba membuat menu dengan klik kanan dalam bahasa java. Menu dalam klik kanan ini saya menggunakan popup menu. Langsung aja ya :
Jadi, dasar pemikiran saya adalah :
- Saya membuat sebuah frame yang didalamnya terdapat sebuah Panel untuk menampung component Popup menu.
- Pada Panel ini saya kasih event listener. Tujuannya adalah untuk menangkap mouse klik pada panel.
- Jika panel diklik kanan, maka dimunculkan popup menu dengan location yang sesuai dengan posisi kursor. (dalam hal ini saya menggunakan fungsi getX() dan getY() untuk mengetahui posisi kursornya).

//klikkanan.java
import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JPopupMenu;
import javax.swing.JTextField;
import java.awt.Rectangle;
import javax.swing.JLabel;
public class klikkanan extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
JPopupMenu Pmenu; //buat Popmenunya
JMenuItem menuItem; //item popup menu
private JTextField jTextField = null;
private JLabel jLabel = null;
/**
* This method initializes jTextField
*
* @return javax.swing.JTextField
*/
private JTextField getJTextField() {
if (jTextField == null) {
jTextField = new JTextField();
jTextField.setBounds(new Rectangle(106, 15, 157, 27));
}
return jTextField;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SwingUtilities.invokeLater(new Runnable() {
public void run() {
tesese thisClass = new tesese();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}
/**
* This is the default constructor
*/
public klikkanan() {
super();
initialize();
this.addMouseListener(new MouseAdapter(){ //event listener untuk mouse
public void mouseReleased(MouseEvent Me){
if(Me.isPopupTrigger()){ //jika klik kanan
Pmenu.show(Me.getComponent(), Me.getX(), Me.getY()); //menampilkan popup menu
}
}
});
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(300, 200);
this.setContentPane(getJContentPane());
this.setTitle(“Klik kanan”);
ActionListener al = new ActionListener() { //event listener untuk menuitem
public void actionPerformed(ActionEvent e) {
jTextField.setText(((JMenuItem) e.getSource()).getText());
}
};
Pmenu = new JPopupMenu();
menuItem = new JMenuItem(“Cut”);
Pmenu.add(menuItem);
menuItem.addActionListener(al); // event listener untuk menuitem
menuItem = new JMenuItem(“Copy”);
Pmenu.add(menuItem);
menuItem.addActionListener(al); // event listener untuk menuitem
menuItem = new JMenuItem(“Paste”);
Pmenu.add(menuItem);
menuItem.addActionListener(al); // event listener untuk menuitem
menuItem = new JMenuItem(“Delete”);
Pmenu.add(menuItem);
menuItem.addActionListener(al); // event listener untuk menuitem
Pmenu.addSeparator();
menuItem = new JMenuItem(“Undo”);
Pmenu.add(menuItem);
menuItem.addActionListener(al); // event listener untuk menuitem
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jLabel = new JLabel();
jLabel.setBounds(new Rectangle(16, 16, 81, 26));
jLabel.setText(“Menu :”);
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJTextField(), null);
jContentPane.add(jLabel, null);
}
return jContentPane;
}
}