フレームにメニューバーを表示する


JMenuBerクラスとJMenuクラス、JMenuItemクラスを使って、画面(フレーム)にメニューを表示します。

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

class  ExamJMenu    {
    public  static  void  main(String  args[])  {
        JFrame  jf    =  new  JFrame("JFrame  test");
        jf.addWindowListener(new  WindowAdapter() {
            public  void  windowClosing(WindowEvent  we)  {
                 System.exit(0);
            }
        });

        //   JMenuBar  <-   JMenu   <-   JMenuItem  or  String
        JMenu  jm  =   new  JMenu("File");
        jm.add("Open");
        jm.add( new JMenuItem("Save"));
   
        JMenuBar  jmb   =   new  JMenuBar();
        jmb.setBackground(Color.yellow);
        jmb.add(jm);

        jf.setJMenuBar(jmb);                
        jf.setBounds(20,50,700,500);
        jf.setVisible(true);
    }
}
      
          



実行結果






3つのクラスの関係
画面の黄色の部分がJMenuBar、JMenuBarに配置されているのがJMenu、Fileメニューに配置されているのがJMenuItemと構成されています。

JMenuItemはjavax.swing.AbstractButtonを継承しているので、リスナーを登録し、
イベント処理する事が可能です。

JMenuはJMenuItemを継承し、JMenuItemやJSeparatorを保持する機能が追加されています。JMenuを保持すれば、サブメニューを作る事もできます。
setMenuber() method
JFrameクラスは通常、直接コンポーネントを乗せることは出来ません。
専用のパネルを入手し、それにコンポーネントを配置しなければなりませんが、
JMenuBarはこのメソッドを使って直接フレームに配置します。