Java----如何在窗口中创建菜单

JMenuBar,菜单栏。菜单栏组件添加到 JFrame 窗口后,在窗口的内容显示区域的顶部出现。实现一个菜单栏主要涉及三种类:

(1)JMenuBar

表示一个菜单栏。

(2)JMenu

表示菜单栏上的一个一级菜单。

(3)JMenuItem, JCheckBoxMenuItem, JRadioButtonMenuItem

表示一级菜单下的一个子菜单项,三者分别表示 普通的子菜单、带复选框的子菜单、带单选按钮的子菜单。

PS: JMenu 继承自 JMenuItem,所以一个 JMenu 也可以当做是一个二级子菜单项,通过 JMenu 和 JMenuItem 之间的嵌套,可实现多级子菜单效果。

代码演示:

package stu1;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
public class menu {
    public static class MainForm extends JFrame {


        private void init(String title)
        {
            setTitle(title);//设置窗口标题


            JMenuBar menuBar = new JMenuBar();//创建菜单栏对象
            setJMenuBar(menuBar);// 将菜单栏对象添加到窗体的菜单栏中

            JMenu menu1 = new JMenu("菜单1");// 创建菜单对象
            menuBar.add(menu1);//将菜单对象添加到菜单栏对象中
            JMenuItem item1 = new JMenuItem("菜单选项1");//创建子菜单对象
            menu1.add(item1);//将子菜单对象添加到一级菜单对象中


            menu1.addSeparator();//在菜单项中间添加分界线

            JMenu menu2 = new JMenu("菜单2");
            menuBar.add(menu2);
            JMenuItem item2 = new JMenuItem("菜单选项2");
            menu1.add(item2);


            JMenu submenu = new JMenu("子菜单1");
            menu1.add(submenu);
            submenu.add(new JMenuItem("子菜单1"));
            submenu.add(new JMenuItem("子菜单2"));



            //item1.setAccelerator(KeyStroke.getKeyStroke('A'));
            item1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,KeyEvent.CTRL_MASK));//添加热键




        }
        public MainForm(String title,int posX,int posY,int width,int height)
        {
            init(title);
            setLocation(posX,posY);
            setSize(width,height);
            setVisible(true);
            setResizable(true);

        }

        public static void main(String[] args){
            int x=0,y=0,w=1000,h=1000;
            MainForm windows1 = new MainForm("一个小窗",x,y,w,h);
            MainForm windows2 = new MainForm("一个小小窗",x,y,w,h);
            Container container= windows1.getContentPane();
            container.setBackground(Color.darkGray);

            windows1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            windows2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        }
    }
}

 

运行截图:

 

posted @ 2020-10-20 22:24  AA、  阅读(3173)  评论(0编辑  收藏  举报