文档章节

模仿记事本的菜单栏

miring
 miring
发布于 2017/03/29 16:46
字数 1144
阅读 10
收藏 0

在Windows操作系统中,自带了一款简单的文本编辑工具——记事本。记事本主要由菜单栏和文本区两部分组成。菜单栏实现了各种常用的功能,文本区用于让用户输入文本。本实例将实现一个类似记事本的菜单栏。实例运行效果如图 输入图片说明 在Swing中使用菜单的第一步是创建一个菜单栏保存各个菜单,并将菜单栏添加到框架上。代码如下:

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

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

JMenu fileMenu = new JMenu("\u6587\u4EF6(F)");
menuBar.add(fileMenu);
JMenuItem newMenuItem = new JMenuItem("\u65B0\u5EFA(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("\u6A21\u4EFF\u8BB0\u4E8B\u672C\u7684\u83DC\u5355\u9879");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        
        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);
        
        JMenu fileMenu = new JMenu("\u6587\u4EF6(F)");
        fileMenu.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        menuBar.add(fileMenu);
        
        JMenuItem newMenuItem = new JMenuItem("\u65B0\u5EFA(N)");
        newMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        fileMenu.add(newMenuItem);
        
        JMenuItem openMenuItem = new JMenuItem("\u6253\u5F00(O)...");
        openMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        fileMenu.add(openMenuItem);
        
        JMenuItem saveMenuItem = new JMenuItem("\u4FDD\u5B58(S)");
        saveMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        fileMenu.add(saveMenuItem);
        
        JMenuItem saveAsMenuItem = new JMenuItem("\u53E6\u5B58\u4E3A(A)...");
        saveAsMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        fileMenu.add(saveAsMenuItem);
        
        JSeparator separator1 = new JSeparator();
        fileMenu.add(separator1);
        
        JMenuItem pageSetMenuItem = new JMenuItem("\u9875\u9762\u8BBE\u7F6E(U)...");
        pageSetMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        fileMenu.add(pageSetMenuItem);
        
        JMenuItem printMenuItem = new JMenuItem("\u6253\u5370(P)...");
        printMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        fileMenu.add(printMenuItem);
        
        JSeparator separator2 = new JSeparator();
        fileMenu.add(separator2);
        
        JMenuItem exitMenuItem = new JMenuItem("\u9000\u51FA(X)");
        exitMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        fileMenu.add(exitMenuItem);
        
        JMenu editMenu = new JMenu("\u7F16\u8F91(E)");
        editMenu.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        menuBar.add(editMenu);
        
        JMenuItem undoMenuItem = new JMenuItem("\u64A4\u9500(U)");
        undoMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        editMenu.add(undoMenuItem);
        
        JSeparator separator3 = new JSeparator();
        editMenu.add(separator3);
        
        JMenuItem cutMenuItem = new JMenuItem("\u526A\u5207(T)");
        cutMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        editMenu.add(cutMenuItem);
        
        JMenuItem copyMenuItem = new JMenuItem("\u590D\u5236(C)");
        copyMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        editMenu.add(copyMenuItem);
        
        JMenuItem pasteMenuItem = new JMenuItem("\u7C98\u8D34(P)");
        pasteMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        editMenu.add(pasteMenuItem);
        
        JMenuItem deleteMenuItem = new JMenuItem("\u5220\u9664(L)");
        deleteMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        editMenu.add(deleteMenuItem);
        
        JSeparator separator4 = new JSeparator();
        editMenu.add(separator4);
        
        JMenuItem findMenuItem = new JMenuItem("\u67E5\u627E(F)...");
        findMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        editMenu.add(findMenuItem);
        
        JMenuItem findNextMenuItem = new JMenuItem("\u67E5\u627E\u4E0B\u4E00\u4E2A(N)");
        findNextMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        editMenu.add(findNextMenuItem);
        
        JMenuItem replaceMenuItem = new JMenuItem("\u66FF\u6362(R)...");
        replaceMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        editMenu.add(replaceMenuItem);
        
        JMenuItem gotoMenuItem = new JMenuItem("\u8F6C\u5230(G)...");
        gotoMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        editMenu.add(gotoMenuItem);
        
        JSeparator separator5 = new JSeparator();
        editMenu.add(separator5);
        
        JMenuItem allMenuItem = new JMenuItem("\u5168\u9009(A)");
        allMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        editMenu.add(allMenuItem);
        
        JMenuItem dateMenuItem = new JMenuItem("\u65F6\u95F4/\u65E5\u671F(D)");
        dateMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        editMenu.add(dateMenuItem);
        
        JMenu formatMenu = new JMenu("\u683C\u5F0F(O)");
        formatMenu.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        menuBar.add(formatMenu);
        
        JMenuItem wrapMenuItem = new JMenuItem("\u81EA\u52A8\u6362\u884C(W)");
        wrapMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        formatMenu.add(wrapMenuItem);
        
        JMenuItem FontMenuItem = new JMenuItem("\u5B57\u4F53(F)...");
        FontMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        formatMenu.add(FontMenuItem);
        
        JMenu viewMenu = new JMenu("\u67E5\u770B(V)");
        viewMenu.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        menuBar.add(viewMenu);
        
        JMenuItem statusMenuItem = new JMenuItem("\u72B6\u6001\u680F(S)");
        statusMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        viewMenu.add(statusMenuItem);
        
        JMenu helpMenu = new JMenu("\u5E2E\u52A9(H)");
        helpMenu.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        menuBar.add(helpMenu);
        
        JMenuItem helpMenuItem = new JMenuItem("\u67E5\u770B\u5E2E\u52A9(H)");
        helpMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        helpMenu.add(helpMenuItem);
        
        JSeparator separator6 = new JSeparator();
        helpMenu.add(separator6);
        
        JMenuItem aboutMenuItem = new JMenuItem("\u5173\u4E8E\u8BB0\u4E8B\u672C(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()方法就可以实现这个功能。此外,还可以增加一些助记符和快捷键,方便用户的使用。

© 著作权归作者所有

miring
粉丝 0
博文 23
码字总数 14869
作品 0
长春
程序员
私信 提问
记事本的改良,就是为什么运行不了?

@晨曦之光 你好,想跟你请教个问题: import javax.swing.*; import java.awt.event.*; import java.awt.*; import java.io.*; public class Window extends JFrame implements ActionListen......

cy105
2013/07/03
472
9
Chrome即时贴插件--Sticky Notes

Chrome即时贴插件在你使用Chrome的时候,帮你将一些文字需要临时保存在某个地方,比如记事本里。但是每次打开开始菜单——附件——记事本难免有一些麻烦,而这个最新的小插件Sticky note就是...

匿名
2009/06/18
3.4K
0
RCP菜单栏,工具栏实现的两种方法及RCP记事本例子

RCP菜单栏,工具栏实现方法及RCP记事本例子 一、创建工程 file->new->other->plug-ins project,创建一个名为org.test.menuAndToolbar的工程: 选择创建RCP hello world 模板的项目,点击fin...

梅超疯
2013/10/22
0
3
Qt:多文档(MDI)文档处理软件思路01

文档处理软件是我们日常生活中最为常用的软件之一。在此以将记事本为例子,实现的基本思路描述。 一:基本外观功能。 1)有菜单栏和按钮,根据不同的实现功能,将按钮添加到菜单中,并且添加...

乔三爷
2015/04/11
0
0
Win10怎么编辑Hosts文件 如何打开hosts文件

Win10怎么编辑Hosts文件 如何打开hosts文件 听语音 | 浏览:497 | 更新:2018-09-09 11:30 | 标签:操作系统 WINDOWS10 1 2 3 4 5 6 7 分步阅读 在Windows10系统中,我们可以通过修改Hosts文...

linjin200
2018/12/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

texlive安装

Installing to: D:/bin/texlive/texlive/2019Installing [001/307, time/total: ??:??/??:??]: adobemapping [2130k]Installing [002/307, time/total: 00:03/08:57]: ae [84k]Installing......

MtrS
今天
2
0
运维规范

命名规范 发布流程 监控告警 故障定位 状态 日志 监控

以谁为师
今天
2
0
约瑟夫环(报数游戏)java实现

开端 公司组织考试,一拿到考题,就是算法里说的约瑟夫环,仔细想想 以前老师将的都忘了,还是自己琢磨把~ package basic.gzy;import java.util.Iterator;import java.util.LinkedList;...

无极之岚
今天
3
0
Kernel字符设备驱动框架

Linux设备分为三大类:字符设备,块设备和网络设备,这三种设备基于不同的设备框架。相较于块设备和网络设备,字符设备在kernel中是最简单的,也是唯一没有基于设备基础框架(device结构)的...

yepanl
今天
3
0
Jenkins 中文本地化的重大进展

本文首发于:Jenkins 中文社区 我从2017年开始,参与 Jenkins 社区贡献。作为一名新成员,翻译可能是帮助社区项目最简单的方法。 本地化的优化通常是较小的改动,你无需了解项目完整的上下文...

Jenkins中文社区
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部