// Paweł Rzechonek (c) November 2005
// okno Swing z menu
// (menu z elementami wyboru i elementami radiowymi)

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ProsteMenuSwing extends JFrame
{
    private final String akcja = "akcja: ";
    private Label opis = new Label(akcja);
    private JCheckBoxMenuItem cbmRamka, cbmTlo;
    private JRadioButtonMenuItem rbmCzer, rbmZiel, rbmNieb;

    public ProsteMenuSwing ()
    {
        super("proste okno w technologii Swing z menu");
        getContentPane().add(opis,BorderLayout.SOUTH);

        JMenuBar mb = new JMenuBar();
        JMenu m = null;
        JMenu mm = null;
        JMenuItem mi = null;
        ButtonGroup bg = null;

        m = new JMenu("Plik");
        m.setMnemonic(KeyEvent.VK_P);
          mi = new JMenuItem("Nowy",KeyEvent.VK_N);
          mi.addActionListener(new ActionListener() {
            public void actionPerformed (ActionEvent ev)
            { opis.setText(akcja+"Nowy"); } });
        m.add(mi);
          mi = new JMenuItem("Otwórz...");
          mi.addActionListener(new ActionListener() {
            public void actionPerformed (ActionEvent ev)
            { opis.setText(akcja+"Otwórz..."); } });
        m.add(mi);
          mi = new JMenuItem("Zapisz",KeyEvent.VK_Z);
          mi.addActionListener(new ActionListener() {
            public void actionPerformed (ActionEvent ev)
            { opis.setText(akcja+"Zapisz"); } });
        m.add(mi);
          mi = new JMenuItem("Zapisz jako...");
          mi.addActionListener(new ActionListener() {
            public void actionPerformed (ActionEvent ev)
            { opis.setText(akcja+"Zapisz jako..."); } });
        m.add(mi);
        m.addSeparator(); // separator
          mi = new JMenuItem("Wyczyść",KeyEvent.VK_W);
          mi.addActionListener(new ActionListener() {
            public void actionPerformed (ActionEvent ev)
            { opis.setText(akcja); } });
        m.add(mi);
        mb.add(m);

        m = new JMenu("Opcje");
        m.setMnemonic(KeyEvent.VK_O);
          cbmRamka = new JCheckBoxMenuItem("Ramka",true);
          cbmRamka.setMnemonic(KeyEvent.VK_R);
          cbmRamka.addActionListener(new ActionListener() {
            public void actionPerformed (ActionEvent ev)
            { opis.setText(akcja+"Ramka-"+cbmRamka.getState()); } });
        m.add(cbmRamka);
          cbmTlo = new JCheckBoxMenuItem("Tło");
          cbmTlo.setMnemonic(KeyEvent.VK_T);
          cbmTlo.addActionListener(new ActionListener() {
            public void actionPerformed (ActionEvent ev)
            { opis.setText(akcja+"Tlo-"+cbmTlo.getState()); } });
        m.add(cbmTlo);
          bg = new ButtonGroup(); // obiekt grupujący pozycje radiowe w menu
          mm = new JMenu("Kolor");
          mm.setMnemonic(KeyEvent.VK_X);
            rbmCzer = new JRadioButtonMenuItem("Czerwony");
            rbmCzer.addActionListener(new ActionListener() {
              public void actionPerformed (ActionEvent ev)
              { opis.setText(akcja+"Kolor-czerwony"); } });
          bg.add(rbmCzer);
          mm.add(rbmCzer);
            rbmZiel = new JRadioButtonMenuItem("Zielony");
            rbmZiel.addActionListener(new ActionListener() {
              public void actionPerformed (ActionEvent ev)
              { opis.setText(akcja+"Kolor-zielony"); } });
          bg.add(rbmZiel);
          mm.add(rbmZiel);
            rbmNieb = new JRadioButtonMenuItem("Niebieski",true);
            rbmNieb.addActionListener(new ActionListener() {
              public void actionPerformed (ActionEvent ev)
              { opis.setText(akcja+"Kolor-niebieski"); } });
          bg.add(rbmNieb);
          mm.add(rbmNieb);
        m.add(mm);
        mb.add(m);

        mb.add(Box.createHorizontalGlue()); // odsunięcie następnych elementów menu na prawo

        m = new JMenu("Pomoc");
          mi = new JMenuItem("O programie",KeyEvent.VK_P);
          mi.addActionListener(new ActionListener() {
            public void actionPerformed (ActionEvent ev)
            { opis.setText(akcja+"O programie"); } });
        m.add(mi);
          mi = new JMenuItem("O autorze",KeyEvent.VK_A);
          mi.addActionListener(new ActionListener() {
            public void actionPerformed (ActionEvent ev)
            { opis.setText(akcja+"O autorze"); } });
        m.add(mi);
        mb.add(m);

        setJMenuBar(mb);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(600,120);
        setLocation(60,60);
        setVisible(true);
    }

    public static void main (String[] arg)
    {
        new ProsteMenuSwing();
    }
}
