java用swing实现记事本_Java Swing实现一个简单而优美的记事本( 较详细注释 )

Java Swing实现具有基本功能的记事本

目前实现了:

文件

新建

打开

保存

退出前保存询问

编辑

剪切

复制

粘贴

清除

撤销

格式

字体选择

字体颜色选择

帮助

关于 (样式采用了css与html来描绘)

工具栏

图标形式的:

保存

复制

粘贴

剪切

文字加粗

文字斜体

底部状态栏

文本字数实时统计

日期显示

编码显示(其实是假的哈哈)

右键弹出菜单

复制

粘贴

剪切

工具栏和右键弹出菜单共享了一些图标,特别地,右键弹出菜单使用了鼠标监听器来实时报告鼠标的坐标,从而绘制弹出菜单。

图标我已经打包了,只要解压到源文件同一个目录下就行。

下载好的Project可以直接用IntelliJ IDEA导入

其中比较有意思的是,我模仿了一些笔记本应用,在文本区没有文字的时候将对应的功能项或图标设置成不可用,也就是灰色状态,直到键入了文本。粗体与斜体之间的可用性影响也写了个逻辑判断函数。

部分核心实现是搬运别人的代码,但是有点杂。。。。大部分框架是自己写的。

注:监听器注册使用了Lambda表达式,看起来更简洁

程序由三个文件组成:

Launcher.java 主方法

MyFrame.java 框架实现

AboutDialog.java 单独用一个文件写「关于」对话框

主界面预览:

280b805938cdc57edd4cc0ca933d1814.png

74ca5d7af418186b2ea13f62941460fb.png

废话不多说,show the code:

Launcher.java :

public class Launcher{

public static void main(String[] args){

new MyFrame("Untitled");

}

}

MyFrame.java :

import javax.swing.*;

import javax.swing.event.DocumentEvent;

import javax.swing.event.DocumentListener;

import javax.swing.undo.UndoManager;

import java.awt.*;

import java.awt.datatransfer.DataFlavor;

import java.awt.datatransfer.Transferable;

import java.awt.event.*;

import java.io.*;

import java.text.SimpleDateFormat;

import java.util.Date;

/*

...................

Created by HengyiYu

...................

*/

class MyFrame extends JFrame {

private static final int DEFAULT_WIDTH = 700; // 窗口默认宽度

private static final int DEFAULT_HEIGHT = 450; // 窗口默认高度

private static final int DEFAULT_FONTSIZE = 20; // 默认字体大小

private JTextArea tv_area = null; // 多行文本框

private JScrollPane s_pane = null; // 带滚动条的面板

private JMenuBar mb = null; // 菜单栏

private JToolBar toolBar1 = null; // 顶部工具栏

private JToolBar toolBar2 = null; // 底部status栏

private JMenu m_file = null; // 文件菜单

private JMenu m_edit = null; // 编辑菜单

private JMenu m_format = null; // 格式菜单

private JMenu m_help = null; // 帮助菜单

private JPopupMenu popupMenu = null; // 右键弹出式菜单

private Icon toolBar_Save = null; // 工具栏保存图标

private Icon toolBar_Cut = null; // 工具栏剪切图标

private Icon toolBar_Copy = null; // 工具栏复制图标

private Icon toolBar_Paste = null; // 工具栏粘贴图标

private Icon statusBar_status = null; // 状态栏图标

private Icon toolBar_more_font = null; // 工具栏字体图标

private Icon m_help_icon = null; // 关于菜单项图标

private JFileChooser chooser = null; // 文件选择对象

private File file = null; // 文件对象

private UndoManager manager = null; // 撤销操作管理对象

private String codestyle = "UTF-8"; // 编码格式

/*----------------文件菜单项---------------------*/

private JMenuItem file_new = null; // 新建

private JMenuItem file_open = null; // 打开

private JMenuItem file_save = null; // 保存

private JMenuItem file_exit = null; // 退出

/*----------------文件菜单项---------------------*/

/*----------------编辑菜单项---------------------*/

private JMenuItem edit_cut = null; // 剪切

private JMenuItem edit_copy = null; // 复制

private JMenuItem edit_paste = null; // 粘贴

private JMenuItem edit_clear = null; // 清空当前内容

private JMenuItem edit_undo = null; // 撤销

/*----------------编辑菜单项---------------------*/

/*----------------格式菜单项---------------------*/

private JMenuItem format_chooseFontColor = null; // 选择字体颜色

private JMenuItem format_chooseFont = null; // 选择字体

/*----------------格式菜单项---------------------*/

/*----------------帮助菜单项---------------------*/

private JMenuItem help_about = null; // 关于

/*----------------帮助菜单项---------------------*/

/*----------------工具栏项目---------------------*/

private JButton button_save = null;

private JButton button_copy = null;

private JButton button_paste = null;

private JButton button_cut = null;

private JLabel moreOption = null;

private JCheckBox check_bold = null; // 加粗选项

private JCheckBox check_italic = null; // 斜体选项

/*----------------工具栏项目---------------------*/

/*----------------弹出菜单项---------------------*/

private JMenuItem popCut = null;

private JMenuItem popCopy = null;

private JMenu

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值