zoukankan      html  css  js  c++  java
  • 模仿记事本的菜单栏

    Windows操作系统中,自带了一款简单的文本编辑工具——记事本。记事本主要由菜单栏和文本区两部分组成。菜单栏实现了各种常用的功能,文本区用于让用户输入文本。本实例将实现一个类似记事本的菜单栏。实例运行效果如图

    Swing中使用菜单的第一步是创建一个菜单栏保存各个菜单,并将菜单栏添加到框架上。代码如下:

    JMenuBar menuBar = new JMenuBar();
    setJMenuBar(menuBar);

    第二步开始创建各个菜单及其菜单项,并将菜单项添加到菜单中。为了分类,可以使用分隔符将功能相近的菜单项分隔后添加到菜单中。代码如下:

    JMenu fileMenu = new JMenu("u6587u4EF6(F)");
    menuBar.add(fileMenu);
    JMenuItem newMenuItem = new JMenuItem("u65B0u5EFA(N)");
    fileMenu.add(newMenuItem);

    提示:菜单栏是可以添加到框架的任意位置的,按照惯例,通常将菜单栏添加到容器的顶部。

    编写Notepad类,该类继承自JFrame。在其构造方法中,增加了一个菜单栏。在菜单栏中增加了Windows的记事本中的各个菜单项。代码如下:

    package com.mingrisoft.jmenu;
    
    import java.awt.BorderLayout;
    import java.awt.EventQueue;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    import javax.swing.UIManager;
    import javax.swing.JMenuBar;
    import javax.swing.JMenu;
    import javax.swing.JMenuItem;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.JSeparator;
    import java.awt.Font;
    
    public class Notepad extends JFrame {
        
        /**
         * 
         */
        private static final long serialVersionUID = 5927958872707427777L;
        private JPanel contentPane;
        
        /**
         * Launch the application.
         */
        public static void main(String[] args) {
            try {
                UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
            } catch (Throwable e) {
                e.printStackTrace();
            }
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    try {
                        Notepad frame = new Notepad();
                        frame.setVisible(true);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
        
        /**
         * Create the frame.
         */
        public Notepad() {
            setTitle("u6A21u4EFFu8BB0u4E8Bu672Cu7684u83DCu5355u9879");
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setBounds(100, 100, 450, 300);
            
            JMenuBar menuBar = new JMenuBar();
            setJMenuBar(menuBar);
            
            JMenu fileMenu = new JMenu("u6587u4EF6(F)");
            fileMenu.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            menuBar.add(fileMenu);
            
            JMenuItem newMenuItem = new JMenuItem("u65B0u5EFA(N)");
            newMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            fileMenu.add(newMenuItem);
            
            JMenuItem openMenuItem = new JMenuItem("u6253u5F00(O)...");
            openMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            fileMenu.add(openMenuItem);
            
            JMenuItem saveMenuItem = new JMenuItem("u4FDDu5B58(S)");
            saveMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            fileMenu.add(saveMenuItem);
            
            JMenuItem saveAsMenuItem = new JMenuItem("u53E6u5B58u4E3A(A)...");
            saveAsMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            fileMenu.add(saveAsMenuItem);
            
            JSeparator separator1 = new JSeparator();
            fileMenu.add(separator1);
            
            JMenuItem pageSetMenuItem = new JMenuItem("u9875u9762u8BBEu7F6E(U)...");
            pageSetMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            fileMenu.add(pageSetMenuItem);
            
            JMenuItem printMenuItem = new JMenuItem("u6253u5370(P)...");
            printMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            fileMenu.add(printMenuItem);
            
            JSeparator separator2 = new JSeparator();
            fileMenu.add(separator2);
            
            JMenuItem exitMenuItem = new JMenuItem("u9000u51FA(X)");
            exitMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            fileMenu.add(exitMenuItem);
            
            JMenu editMenu = new JMenu("u7F16u8F91(E)");
            editMenu.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            menuBar.add(editMenu);
            
            JMenuItem undoMenuItem = new JMenuItem("u64A4u9500(U)");
            undoMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            editMenu.add(undoMenuItem);
            
            JSeparator separator3 = new JSeparator();
            editMenu.add(separator3);
            
            JMenuItem cutMenuItem = new JMenuItem("u526Au5207(T)");
            cutMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            editMenu.add(cutMenuItem);
            
            JMenuItem copyMenuItem = new JMenuItem("u590Du5236(C)");
            copyMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            editMenu.add(copyMenuItem);
            
            JMenuItem pasteMenuItem = new JMenuItem("u7C98u8D34(P)");
            pasteMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            editMenu.add(pasteMenuItem);
            
            JMenuItem deleteMenuItem = new JMenuItem("u5220u9664(L)");
            deleteMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            editMenu.add(deleteMenuItem);
            
            JSeparator separator4 = new JSeparator();
            editMenu.add(separator4);
            
            JMenuItem findMenuItem = new JMenuItem("u67E5u627E(F)...");
            findMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            editMenu.add(findMenuItem);
            
            JMenuItem findNextMenuItem = new JMenuItem("u67E5u627Eu4E0Bu4E00u4E2A(N)");
            findNextMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            editMenu.add(findNextMenuItem);
            
            JMenuItem replaceMenuItem = new JMenuItem("u66FFu6362(R)...");
            replaceMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            editMenu.add(replaceMenuItem);
            
            JMenuItem gotoMenuItem = new JMenuItem("u8F6Cu5230(G)...");
            gotoMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            editMenu.add(gotoMenuItem);
            
            JSeparator separator5 = new JSeparator();
            editMenu.add(separator5);
            
            JMenuItem allMenuItem = new JMenuItem("u5168u9009(A)");
            allMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            editMenu.add(allMenuItem);
            
            JMenuItem dateMenuItem = new JMenuItem("u65F6u95F4/u65E5u671F(D)");
            dateMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            editMenu.add(dateMenuItem);
            
            JMenu formatMenu = new JMenu("u683Cu5F0F(O)");
            formatMenu.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            menuBar.add(formatMenu);
            
            JMenuItem wrapMenuItem = new JMenuItem("u81EAu52A8u6362u884C(W)");
            wrapMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            formatMenu.add(wrapMenuItem);
            
            JMenuItem FontMenuItem = new JMenuItem("u5B57u4F53(F)...");
            FontMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            formatMenu.add(FontMenuItem);
            
            JMenu viewMenu = new JMenu("u67E5u770B(V)");
            viewMenu.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            menuBar.add(viewMenu);
            
            JMenuItem statusMenuItem = new JMenuItem("u72B6u6001u680F(S)");
            statusMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            viewMenu.add(statusMenuItem);
            
            JMenu helpMenu = new JMenu("u5E2Eu52A9(H)");
            helpMenu.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            menuBar.add(helpMenu);
            
            JMenuItem helpMenuItem = new JMenuItem("u67E5u770Bu5E2Eu52A9(H)");
            helpMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            helpMenu.add(helpMenuItem);
            
            JSeparator separator6 = new JSeparator();
            helpMenu.add(separator6);
            
            JMenuItem aboutMenuItem = new JMenuItem("u5173u4E8Eu8BB0u4E8Bu672C(A)");
            aboutMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            helpMenu.add(aboutMenuItem);
            contentPane = new JPanel();
            contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
            contentPane.setLayout(new BorderLayout(0, 0));
            setContentPane(contentPane);
            
            JScrollPane scrollPane = new JScrollPane();
            contentPane.add(scrollPane, BorderLayout.CENTER);
            
            JTextArea textArea = new JTextArea();
            textArea.setFont(new Font("微软雅黑", Font.PLAIN, 16));
            textArea.setWrapStyleWord(true);
            scrollPane.setViewportView(textArea);
        }
        
    }

     提示:setFont()是在JComponent类中定义的,因此可以在其子类中使用。

     

    心法领悟:启动和禁用菜单项。

     

    有时候,有些功能在特定的场合才能使用。例如,如果文本域中没有文本,就没有保存的必要。此时可以禁用保存菜单。当用户输入文本时再启动。使用菜单项的setEnabled()方法就可以实现这个功能。此外,还可以增加一些助记符和快捷键,方便用户的使用。

     

  • 相关阅读:
    css选择符有哪些?哪些属性可以继承?优先级算法如何计算?内联和important哪个优先
    移动端重要的几个CSS3属性设置
    关于移动端的Click事件
    JS根据key值获取URL中的参数值,以及把URL的参数转换成json对象
    动态添加JS文件到页面
    JS 模拟C# 字符串格式化操作
    JS cookie 读写操作
    很好用的Tab标签切换功能,延迟Tab切换。
    SpringMVC 原理
    SpringMVC 三种异常处理方式
  • 原文地址:https://www.cnblogs.com/mrxy/p/6639358.html
Copyright © 2011-2022 走看看