java buffer 记事本_Java实现记事本|IO流/GUI
Java实现记事本
题目
利用GUI实现一个简单的记事本(notepad),即打开文件,文字内容显示在界面上;
允许对文字内容进行编辑,并可以保存到文件。
代码
class notPadcontainer{
public Boolean visible = false;
//组件定义成属性
public JFrame notPadFrame;
public JMenuBar notPadMenuBar;
public JMenu firMenu;
public JMenu secMenu;
public JMenu thirMenu;
public JMenu fourMenu;
public JMenuItem buildItem;
public JMenuItem openItem;
public JMenuItem reserveItem;
public JMenuItem paperSetItem;
public JMenuItem clearItem;
public JMenuItem aboutItem;
public JMenuItem fontItem20;
public JMenuItem fontItem40;
public JTextArea textArea;
public JScrollPane textScrollPane;
/*
* 无参构造函数
* 创建组件 初始化组件
*/
notPadcontainer(){
//窗体Frame
this.notPadFrame = new JFrame("notePad by fishers"); //设置窗体 名字为notePad
this.notPadFrame.setLayout(new BorderLayout()); //边界布局方式
this.notPadFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置关闭框
this.notPadFrame.setSize(500,500); //设置窗口大小
//菜单组件
this.notPadMenuBar = new JMenuBar();
this.firMenu = new JMenu("文件");
this.thirMenu = new JMenu("字体");
this.secMenu = new JMenu("编辑");
this.fourMenu = new JMenu("帮助");
//create JMenuItem for the First menu
this.buildItem = new JMenuItem("新建");
this.openItem = new JMenuItem("打开");
this.reserveItem = new JMenuItem("保存");
this.paperSetItem = new JMenuItem("页面设置");
//create JMenuItem for the sec thir four menu
this.clearItem = new JMenuItem("清空");
this.aboutItem = new JMenuItem("关于");
this.fontItem20 = new JMenuItem("字体20号");
this.fontItem40 = new JMenuItem("字体40号");
//文本组件
this.textArea = new JTextArea();
this.textScrollPane = new JScrollPane(textArea);
textArea.setFont(new Font("宋体",Font.PLAIN,20)); //默认20号字体
ItemAdd();
runListener();
}
//添加组件
public void ItemAdd(){
//添加JMenu到JMenuBar
notPadMenuBar.add(firMenu);
notPadMenuBar.add(secMenu);
notPadMenuBar.add(thirMenu);
notPadMenuBar.add(fourMenu);
//添加JMenuItem到第一个菜单
firMenu.add(buildItem);
firMenu.add(openItem);
firMenu.add(reserveItem);
firMenu.add(paperSetItem);
secMenu.add(clearItem);
thirMenu.add(fontItem20);
thirMenu.add(fontItem40);
fourMenu.add(aboutItem);
//notPadFrame中添加各个组件
this.notPadFrame.setJMenuBar(notPadMenuBar);
this.notPadFrame.add(textScrollPane,BorderLayout.CENTER);
}
/*
* 事件监听代码部分
*/
public void runListener() {
//新建文件 = 清空。。
buildItem.addActionListener( e -> {
textArea.setText("");
});
//打开文件
openItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//设置弹出框 FileDialog
FileDialog saveFiledialog = new FileDialog(notPadFrame,"打开文件",FileDialog.LOAD);
saveFiledialog.setVisible(true);
String fileDir = saveFiledialog.getDirectory(); //拿到目录
String fileName = saveFiledialog.getFile(); //拿到文件名
// System.out.println(fileDir);
// System.out.println(fileName);
File openFile = new File(fileDir,fileName); //使用File类创建新文件对象
try {
FileReader freader = new FileReader(openFile); //字符流
StringBuffer tempBuffer = new StringBuffer();//StringBuffer可变
int len = 0; //下面使用read方法读取
while((len = freader.read()) != -1) {
tempBuffer.append((char)len); //append方法加入StringBuffer
}
String openString = new String(tempBuffer.toString());
textArea.setText(openString);
freader.close();//关闭流
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
//保存文件
reserveItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
FileDialog saveFiledialog = new FileDialog(notPadFrame,"保存文件",FileDialog.SAVE);//父级frame 标题 mode
saveFiledialog.setVisible(true);
String fileDir = saveFiledialog.getDirectory();
String fileName = saveFiledialog.getFile();
System.out.println(fileDir);
System.out.println(fileName);
String ContentString = textArea.getText();
File saveFile = new File(fileDir,fileName);
try {
FileWriter fWriter = new FileWriter(saveFile); //使用字符流写文件
fWriter.write(ContentString); //写文件
fWriter.close(); //关闭流
}catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
//清空文件
clearItem.addActionListener( e -> {
textArea.setText("");
});
//监听关于
aboutItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JFrame aboutFrame = new JFrame("关于"); //新建窗口
aboutFrame.setLayout(new BorderLayout());
aboutFrame.setSize(300,115);
aboutFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);//设置隐藏窗口
JPanel panel = new JPanel();
JLabel label = new JLabel("不会换行、中文乱码的记事本");
JPanel panel2 = new JPanel();
JLabel label2 = new JLabel("Copyright ? 2019 fishers");
panel.add(label);
panel2.add(label2);
aboutFrame.add(panel,BorderLayout.CENTER);
aboutFrame.add(panel2,BorderLayout.PAGE_START);
aboutFrame.setVisible(true);
}
});
fontItem20.addActionListener(e->{
textArea.setFont(new Font("宋体",Font.PLAIN,20));
});
fontItem40.addActionListener(e->{
textArea.setFont(new Font("宋体",Font.PLAIN,40));
});
}
//setVisible:设置窗口显示
public void setVisible(Boolean visible) {
this.visible = visible;
this.notPadFrame.setVisible(this.visible);
}
}
public class notePad {
public static void main(String[] args) {
notPadcontainer oneNote = new notPadcontainer();
oneNote.setVisible(true);
}
}
java buffer 记事本_Java实现记事本|IO流/GUI相关推荐
- java音频教程_Java如何使用IO流实现音频的剪切和拼接的示例代码
这篇文章主要为大家详细介绍了Java使用IO流实现音频的剪切和拼接,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 需求:使用IO流将指定目录下的若干个音频文件的高潮部分,进行剪切,并重新拼接成一首 ...
- java中--《_Java中的IO流(五)
当需要直接把信息输出到文件中的时候,并且想要每次输入完成后立即把信息输出到文件中,演示如下 1 private static void function_demo2() throwsIOExcepti ...
- Java面试知识点:File、IO流
问题:Java面试知识点:File.IO流 答案: 1.File listFiles方法注意事项: • 当调用者不存在时,返回null • 当调用者是一个文件时,返回null • 当调用者是一个空文件 ...
- Java中的File类和IO流
Java中的File类和IO流 File类 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. File的分隔符 import java.io.Fi ...
- java流类图结构_java学习之IO流(学习之旅,一)
个人在学习IO流的时候看到如下所示java 流类图结构的时候,我的感想是,这么多··处于蒙的状态. Java流类图结构 这么多,没有分类不好学,那我们就慢慢一口一口的吃,这样每天学习一点就好了,其实很 ...
- java 弹出另存为_java如何实现 io流传输过来的文件,提示另存为弹出窗口?
java如何实现 io流传输过来的文件,提示另存为弹出窗口? mip版 关注:166 答案:6 悬赏:0 解决时间 2021-01-24 22:00 已解决 2021-01-24 11:06 最 ...
- java输出流输入流的使用_Java中的IO流之文件输入输出流
Java中的IO流之文件输入输出流 1.文件流介绍 文件流是以字节为单位进行读写文件的,所以属于字节流,并且是低级流.文件流位于java.io包下. 输入输出流分别是FileInputSteam和Fi ...
- java io流顶层_Java中的IO流(一)
一,IO流的分类 A,按照操作的对象不同可分为字节流与字符流 B,按照流的方向不同可分为输入(指从外部存储设备拿文件到内存)流也叫读与输出(指从内存把文件写入到外部存储设备)流也叫写 注:字节流可以操 ...
- java中io流是类吗_Java中的IO流
今天刚刚看完java的io流操作,把主要的脉络看了一遍,不能保证以后使用时都能得心应手,但是最起码用到时知道有这么一个功能可以实现,下面对学习进行一下简单的总结: IO流主要用于硬板.内存.键盘等处理 ...
- java体系的四大基类_Java中的io流学习(了解四大基类和基本步骤)
Java中io流四大基类及io流操作四大基本步骤 io流:(input/output)即输入输出流.面向对象的思想之一是面向接口编程,面向父类编程,也就是多态.所以学好基类(父类)很重要. 分类 按处 ...
最新文章
- R2LIVE: 一个鲁棒实时的雷达-惯导-视觉紧耦合的位姿估计和建图系统
- Using --强制资源清理
- python 按钮事件_从django vi中的按钮获取click事件
- django简单实现文件上传
- 「Vue」vuex 的使用
- 基于JAVA+SpringMVC+Mybatis+MYSQL的旅游管理系统
- 在线ASCII艺术字,Spring Boot banner生成工具
- 9.TCP/IP 详解卷1 --- IP 选路
- 以太坊使用及代币开发实战
- 【游戏理论】游戏与游戏开发
- 伯努利分布、二项分布、多项分布、Beta分布、Dirichlet分布、连续分布(正态分布)、大数定理、中心极限定理、贝叶斯理论
- MATLAB高维矩阵的求和、索引
- 车载etc充值显示服务器连接失败,为什么有的etc会显示余额,有的没有
- MDCC 2016参会总结
- hyperledger fabric 2.3.3 环境搭建教程
- python 节假日_python判断工作日,节假日
- 笔记本电脑键盘输入错误如何解决 电脑按键错乱的解决方法步骤
- redis+spring 整合
- 研华服务器显示不了全屏啊,研华串口服务器设置
- 【数据融合】基于AIS和雷达的多传感器航迹融合附matlab代码