前言

java编程就是分布式、微服务?离开Spring...我还能写点什么
不知从何时起,自己喜欢上也习惯了用java写点界面程序、app。也许这就是程序员仅剩的一点乐趣。但对我而言。我却很享受这个过程。程序猿一枚,热爱着编程。闲暇时光,一杯咖啡,一首轻音乐,打开笔记本用一行行代码实现自己心中的想法,实属快事。

效果

代码


package example;/**
* ┏┓   ┏┓
*┏┛┻━━━ ┻┓
*┃       ┃  
*┃   ━   ┃
*┃ ┳┛ ┗┳ ┃
*┃       ┃
*┃   ┻   ┃
*┃       ┃
*┗━┓   ┏━┛
*  ┃   ┃神兽保佑
*  ┃   ┃代码无BUG!
*  ┃   ┗━━━┓
*  ┃       ┣┓
*  ┃       ┏┛
*  ┗┓┓┏━┳┓┏┛
*   ┃┫┫ ┃┫┫
*   ┗┻┛ ┗┻┛
*
*!!!!!!!!!!!!!!!!!!Get busy living or get busy dying!!!!!!!!!!!!!
*//*** 记事本启动类* * @author www.javayihao.top* @Time 2019*/
public class App {public static void main(String[] args) {// 启动自定义窗口对象EditorFrame editor = new EditorFrame();}
}package example;import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.JToolBar;
import javax.swing.text.DefaultStyledDocument;/*** java实现记事本程序主程序* * @author Administrator**/
/** 自定义窗口类EditorFrame继承JFrame实现动作监听接口ActionListener*/
public class EditorFrame extends JFrame implements ActionListener {// 定义相关属性private JMenuBar menuBar;// 頂部菜单栏private JMenu menuFile, menuEdit, menuAbout;// 菜单文件、编辑、关于// 菜单项新建、 打开、保存、退出、剪切、复制、粘贴、关于private JMenuItem itemNewFile, itemOpen, itemSave, itemExit, itemCut, itemCopy, itemPaste, itemAbout;private JToolBar toolBar;// 工具条// 按钮新建、 打开、保存、退出、剪切、复制、粘贴、关于private JButton butNewFile, butOpen, butSave, butExit, butCut, butCopy, butPaste, butAbout;private JTextPane textPane;// 编辑窗口private JLabel label;// 底部标签栏private JFileChooser fileChooser;// 文件选择器private JScrollPane scrollPane;/** 构造方法*/public EditorFrame() {// 实例化菜单栏menuBar = new JMenuBar();// 实例化菜单menuFile = new JMenu("文件");menuEdit = new JMenu("编辑");menuAbout = new JMenu("关于");// 实例化菜单项并添加事件监听itemNewFile = new JMenuItem("新建");itemNewFile.addActionListener(this);// 设置监听itemNewFile.setActionCommand("newFile");itemOpen = new JMenuItem("打开");itemOpen.addActionListener(this);// 设置监听itemOpen.setActionCommand("open");itemSave = new JMenuItem("保存");itemSave.addActionListener(this);// 设置监听itemSave.setActionCommand("save");itemExit = new JMenuItem("退出");itemExit.addActionListener(this);// 设置监听itemExit.setActionCommand("exit");itemCut = new JMenuItem("剪切");itemCut.addActionListener(this);// 设置监听itemCut.setActionCommand("cut");itemCopy = new JMenuItem("复制");itemCopy.addActionListener(this);// 设置监听itemCopy.setActionCommand("copy");itemPaste = new JMenuItem("粘贴");itemPaste.addActionListener(this);// 设置监听itemPaste.setActionCommand("paste");itemAbout = new JMenuItem("关于");itemAbout.addActionListener(this);// 设置监听itemAbout.setActionCommand("about");// 文件设置菜单项menuFile.add(itemNewFile);menuFile.add(itemOpen);menuFile.add(itemExit);menuFile.add(itemSave);// 编辑设置菜单项menuEdit.add(itemCut);menuEdit.add(itemCopy);menuEdit.add(itemPaste);// 关于设置菜单menuAbout.add(itemAbout);// 菜单栏设置菜单menuBar.add(menuFile);menuBar.add(menuEdit);menuBar.add(menuAbout);this.setJMenuBar(menuBar);// 实例化工具条toolBar = new JToolBar();// 实例化按钮butNewFile = new JButton("新建");butNewFile.addActionListener(this);butNewFile.setActionCommand("newFile");butOpen = new JButton("打开");butOpen.addActionListener(this);// 设置监听butOpen.setActionCommand("open");butSave = new JButton("保存");butSave.addActionListener(this);// 设置监听butSave.setActionCommand("save");butExit = new JButton("退出");butExit.addActionListener(this);// 设置监听butExit.setActionCommand("exit");butCut = new JButton("剪切");butCut.addActionListener(this);// 设置监听butCut.setActionCommand("cut");butCopy = new JButton("复制");butCopy.addActionListener(this);// 设置监听butCopy.setActionCommand("copy");butPaste = new JButton("粘贴");butPaste.addActionListener(this);// 设置监听butPaste.setActionCommand("paste");butAbout = new JButton("关于");butAbout.addActionListener(this);// 设置监听butAbout.setActionCommand("about");// 工具条设置按钮toolBar.add(butNewFile);toolBar.add(butOpen);toolBar.add(butSave);toolBar.add(butExit);toolBar.add(butCut);toolBar.add(butCopy);toolBar.add(butPaste);toolBar.add(butAbout);// 实例化编辑窗口textPane = new JTextPane();label = new JLabel("www.javayihao.top ----by xiaoyuan");// 实例化文件选择器fileChooser = new JFileChooser();// 实例化滚动条scrollPane = new JScrollPane(textPane);// 窗口容器中添加組件(使用边界布局)Container container = getContentPane(); // 得到容器container.add(toolBar, BorderLayout.NORTH); // 增加工具栏container.add(scrollPane, BorderLayout.CENTER);container.add(label, BorderLayout.SOUTH); // 增加状态栏// 初始化窗口this.setTitle("小猿记事本");// 窗口标题this.setSize(600, 300);// 窗体大小this.setIconImage((new ImageIcon("images/logo.png")).getImage());// 设置图标this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置可关闭进程int width = Toolkit.getDefaultToolkit().getScreenSize().width;// 获得屏幕宽度int height = Toolkit.getDefaultToolkit().getScreenSize().height;// 获得屏幕高度this.setLocation((width - 500) / 2, (height - 400) / 2);// 剧中显示this.setVisible(true);// 设置窗体可见this.setResizable(true);// 可改变窗体大小}/** 事件方法*/@Overridepublic void actionPerformed(ActionEvent e) {if (e.getActionCommand().equals("newFile")) {textPane.setDocument(new DefaultStyledDocument());// 清空文档} else if (e.getActionCommand().equals("open")) {int i = fileChooser.showOpenDialog(EditorFrame.this); // 显示打开文件对话框if (i == JFileChooser.APPROVE_OPTION) { // 点击对话框中打开选项File f = fileChooser.getSelectedFile(); // 得到选择的文件try {InputStream is = new FileInputStream(f); // 得到文件输入流textPane.read(is, "d"); // 读入文件到文本窗格} catch (Exception ex) {ex.printStackTrace(); // 输出出错信息}}} else if (e.getActionCommand().equals("save")) {int i = fileChooser.showSaveDialog(EditorFrame.this); // 显示保存文件对话框if (i == JFileChooser.APPROVE_OPTION) { // 点击对话框中保存按钮File f = fileChooser.getSelectedFile(); // 得到选择的文件try {FileOutputStream out = new FileOutputStream(f); // 得到文件输出流out.write(textPane.getText().getBytes()); // 写出文件} catch (Exception ex) {ex.printStackTrace(); // 输出出错信息}}} else if (e.getActionCommand().equals("exit")) {System.exit(0);} else if (e.getActionCommand().equals("cut")) {textPane.cut();// 調用文本剪切方法} else if (e.getActionCommand().equals("copy")) {textPane.copy();// 調用复制方法} else if (e.getActionCommand().equals("paste")) {textPane.paste();// 调用粘贴方法} else if (e.getActionCommand().equals("about")) {JOptionPane.showMessageDialog(EditorFrame.this, "www.javayihao.top---简单的文本编辑器演示");}}}

嗯,差不多了,一个多小时了,写着玩玩挺舒服的,代码不足之处就是重复代码过多,本来打算自定一个事件数组,使用java8中的Stream流特性给组件以此添加事件,为了看着清楚就这样喽....

更多java实战项目 文章 关注微信公众号 java一号

java fx能不能添加到swing中_java写个记事本相关推荐

  1. java GUI怎么输入_在Swing中创建Java GUI以进行表单输入

    好吧,我已经浏览了整个互联网,但却未能找到这个问题的答案,所以也许有人可以提供一些见解. 我正在开发一个相对简单的Java应用程序,它将取代目前用于系统访问请求的Word文档.它旨在允许表单输入新的员 ...

  2. java 将数据加载到内存中_java 将数据加载到内存中的操作

    将数据加载到内存中 1.建立InitListener.java package app.util; import java.util.HashMap; import java.util.Map; im ...

  3. java fx插入图片,javafx在tableview中添加图像

    我使用了你的代码但是使用了更新版本的Netbeans . 我还添加了一个String列 . import javafx.scene.image.ImageView; public class Cust ...

  4. java文本框默认格式化,XJL:Swing中的格式化文本框

    首先演示一个NumberFormatter的例子,在这个例子中要求用户输入一个数字,单击按钮后将用户输入的数字乘2以后重新赋值给输入框.用户输入的数字必须大于0,小于100. package com. ...

  5. java如何将表添加到文本区_java – 在itext中向表中的单元格添加更多文本

    我正在尝试使用itext按照以下代码在表格单元格中添加一些带条形码的文本,但它不会显示在pdf文件中.我尝试添加块和段.任何有关这方面的帮助将不胜感激. Barcode128 barcode = ne ...

  6. java填空题 在非静态成员方法中_Java学习(四): 类的使用

    1. 类 1.1 类的定义 [修饰符] class 类名 { // 零或多个构造器定义... // 零或多个Field... // 零或多个方法...} 修饰符: 如public,private及许多 ...

  7. java填空题 在非静态成员方法中_Java程序设计填空和改错题(参考答案)

    Java语言中的关键字用法 1.Java语言中有4种基本的整数类型,哪种类型所占的内存空间最小,写出定 义该类型的关键字_____________. byte 2.Java语言中有4种基本的整数类型, ...

  8. java填空题 在非静态成员方法中_JAVA语言与WWW技术复习题

    2016-2017年第二学期JAVA语言与WWW技术复习题 一.填空题 1.Java的三大体系分别是___ Java EE _ __.____ Java SE__.___ Java ME __. 2. ...

  9. java读取excel数据保存到数据库中_java读取excel的内容(可保存到数据库中)

    //** poi jar包 // public classReadExcel { @SuppressWarnings("static-access")private staticS ...

最新文章

  1. BGP的各种属性配置
  2. 为什么要划分物料组_SAP
  3. electron 打开调试_Electron 应用调试指南
  4. java main方法里调用mapper
  5. java在一个类里实现存款_用Java编写一个简单的存款
  6. 安卓系统应用启动流程分析
  7. 串口 多个activity 安卓_Android-EasySerialPort
  8. mcq 队列_MCQ | 软件程序分析工具和组件分类| 免费和开源软件
  9. 前端常用60余种工具方法(上)
  10. oracle 修改sgamaxsize_Oracle修改表空间大小
  11. java 异常处理 Throwable Error 和Exception
  12. 一键去除域名非80端口,去掉域名后面带的端口号快速解决方案
  13. PopupWindwo和AlertDialog的区别
  14. sql server 提取汉字/数字/字母的方法
  15. 【知识梳理】《Kafka权威指南》知识梳理
  16. android实现模拟微信调用相机和手机图库更换头像
  17. 免费下载Microsoft Visual C++ 2010 Express (VSExpress)安装包地址分享速进
  18. 从期刊层面看科研!计算机顶级期刊大盘点(上)
  19. 用python画一个蜡笔小新
  20. 虚拟机启动失败:VMware Workstation and Device/Credential Guard are not compatible

热门文章

  1. ELK收集tomcat日志
  2. Elasticsearch地理位置
  3. 启动zabbix server服务
  4. 添加Zabbix Agent客户端,并解决报错。
  5. 升级node,老的项目启动不了的解决方法(亲测有效)
  6. 散列函数之双重散列算法解决冲突问题
  7. 关于EXP-00056: 遇到 ORACLE 错误 1455 ORA-01455: 转换列溢出整数数据类型 EXP-00000: 导出终止失败 的问题解决方法整理
  8. layer弹窗弹出位置不在浏览器窗口居中的问题的解决方法
  9. MySQL数据库远程连接很慢的解决方案
  10. 异常:java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.Workbook.getCellStyleAt