Menu Klik kanan pada java

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 :

  1. Saya membuat sebuah frame yang didalamnya terdapat sebuah Panel untuk menampung component Popup menu.
  2. Pada Panel ini saya kasih event listener. Tujuannya adalah untuk menangkap mouse klik pada panel.
  3. 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;
}

}

Leave a Reply