05 April 2009

java menu

/**
 * Title : DemoJMenu
 * Deskripsi: Membuat aplikasi Menu sederhana.
 * @author : Benny Hermawan
 * @versi : 1.0
 */

import java.awt.*;
import java.awt.event.*;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.ButtonGroup;
import javax.swing.JMenuBar;
import javax.swing.KeyStroke;
import javax.swing.ImageIcon;

import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.JFrame;


public class DemoJMenu extends JFrame 
  implements ActionListener, ItemListener {
  JTextArea output;
  JScrollPane scrollPane;
  String newline = "\n";

  // Konstruktor Default
  public DemoJMenu() {
  JMenuBar menuBar;
  JMenu menu, submenu;
  JMenuItem menuItem;
  JRadioButtonMenuItem rbMenuItem;
  JCheckBoxMenuItem cbMenuItem;

  addWindowListener(new WindowAdapter() {
  public void windowClosing(WindowEvent e) {
  System.exit(0);
  }
  });

  // Menambahkan komponen-komponen ke window 
  // menggunakan default BorderLayout.
  Container contentPane = getContentPane();
  output = new JTextArea(5, 30);
  output.setEditable(false);
  scrollPane = new JScrollPane(output);
  contentPane.add(scrollPane, BorderLayout.CENTER);

  // Membuat menu bar.
  menuBar = new JMenuBar();
  setJMenuBar(menuBar);

  // Membuat menu pertama.
  menu = new JMenu("Menu");
  menu.setMnemonic(KeyEvent.VK_M);
  menu.getAccessibleContext().setAccessibleDescription(
  "Hanya menu ini yang memiliki item menu");
  menuBar.add(menu);

  // Membuat kelompok JMenuItems
  menuItem = new JMenuItem("New",
  KeyEvent.VK_T);

  menuItem.setAccelerator(KeyStroke.getKeyStroke(
  KeyEvent.VK_1, ActionEvent.ALT_MASK));
  menuItem.getAccessibleContext().setAccessibleDescription(
  "Item ini tidak mengerjakan apapun");
  menuItem.addActionListener(this);
  menu.add(menuItem);

  menuItem = new JMenuItem("Open", 
  new ImageIcon("new.gif"));
  menuItem.addActionListener(this);
  menu.add(menuItem);

  menuItem = new JMenuItem(new ImageIcon("open.gif"));
  menuItem.addActionListener(this);
  menu.add(menuItem);

  // Membuat kelompok item menu berupa radio button 
  menu.addSeparator();
  ButtonGroup group = new ButtonGroup();
  rbMenuItem = new JRadioButtonMenuItem
  ("Save");
  rbMenuItem.setSelected(true);
  rbMenuItem.setMnemonic(KeyEvent.VK_R);
  group.add(rbMenuItem);
  rbMenuItem.addActionListener(this);
  menu.add(rbMenuItem);
  rbMenuItem = new JRadioButtonMenuItem
  ("Save As");
  rbMenuItem.setMnemonic(KeyEvent.VK_L);
  group.add(rbMenuItem);
  rbMenuItem.addActionListener(this);
  menu.add(rbMenuItem);

  // Membuat kelompok item menu berupa check box 
  menu.addSeparator();
  cbMenuItem = new JCheckBoxMenuItem
  ("Import File");
  cbMenuItem.setMnemonic(KeyEvent.VK_C);
  cbMenuItem.addItemListener(this);
  menu.add(cbMenuItem);
  cbMenuItem = new JCheckBoxMenuItem
  ("Export File");
  cbMenuItem.addItemListener(this);
  menu.add(cbMenuItem);

  //Mengeset submenu
  menu.addSeparator();
  submenu = new JMenu("Exit");
  submenu.setMnemonic(KeyEvent.VK_S);

  menuItem = new JMenuItem("Exit with Save");
  menuItem.setAccelerator(KeyStroke.getKeyStroke(
  KeyEvent.VK_2, ActionEvent.ALT_MASK));
  menuItem.addActionListener(this);
  submenu.add(menuItem);

  menuItem = new JMenuItem("Exit without Save");
  menuItem.addActionListener(this);
  submenu.add(menuItem);
  menu.add(submenu);

  // Membuat menu kedua dalam menu bar.
  menu = new JMenu("Menu lainnya");
  menu.getAccessibleContext().setAccessibleDescription(
  "Menu ini hanya menampilkan deteksi event");
  menuBar.add(menu);
  }

  // Membuat handler yang akan mendeteksi event
  public void actionPerformed(ActionEvent e) {
  JMenuItem source = (JMenuItem)(e.getSource());
  String s = "Action event terdeteksi."
  + newline
  + " Event source: " + source.getText()
  + " (merupakan instans dari" + 
  getClassName(source) + ")";
  output.append(s + newline);
  }

  public void itemStateChanged(ItemEvent e) {
  JMenuItem source = (JMenuItem)(e.getSource());
  String s = "Item event terdeteksi."
  + newline
  + " Event source: " + source.getText()
  + " (merupakan instans dari " + 
  getClassName(source) + ")"
  + newline
  + " State baru: " 
  + ((e.getStateChange() == ItemEvent.SELECTED) ?
  "selected":"unselected");
  output.append(s + newline);
  }

  // Mengembalikan nama kelas 
  protected String getClassName(Object o) {
  String classString = o.getClass().getName();
  int dotIndex = classString.lastIndexOf(".");
  return classString.substring(dotIndex+1);
  }

  // Main Method
  public static void main(String[] args) {
  DemoJMenu window = new DemoJMenu();

  window.setTitle("Mendemonstrasikan Menu");
  window.setSize(450, 260);
  window.setVisible(true);
  }
}