本篇文章给大家分享的是有关怎么在Java中使用GUI实现文本文件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
一、实验题目
二、分析
实验要求为:
实现一个界面,界面中包含一个文本显示区和两个按钮(存档和读档)
读档按钮作用是打开文件并读取内容,将内容显示在文本区中
存档按钮作用是将文本区的内容写入到文件中。
简单分析一下,可以看出这样的要求奥,包含的要考察知识点主要有两个方向:
GUI绘制界面并添加事件
使用IO流对象对文件进行读写
好的小伙伴们,废话不多说,下面就来的实现它。
三、实现
首先,让我们创建一个GUI界面,先秉持着一切从简的设计思想,预计它长这样:
这样的布局方式,我们可以选择采用流布局实现,在容器中直接放入文本显示区和两个按钮,适当调整窗口大小即可实现:
import java.awt.Container;import java.awt.FlowLayout;import java.awt.TextArea;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;public class GUIDemo extends JFrame{//三个组件private JButton saveButton;private JButton loadButton;private TextArea textArea;//容器private Container container;public GUIDemo() {//设置titlesuper("File Demo");//设置流布局setLayout(new FlowLayout());//获取容器container = getContentPane();//三个组件textArea = new TextArea();saveButton = new JButton("save");loadButton = new JButton("load");//保存文件按钮点击事件saveButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("存档成功");}});//读入文件按钮点击事件loadButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("读档成功");}});//装填三个组件container.add(textArea);container.add(loadButton);container.add(saveButton);//调整大小setSize(500, 300);//显示setVisible(true);}public static void main(String[] args) {GUIDemo demo = new GUIDemo();demo.setDefaultCloseOperation(EXIT_ON_CLOSE);}}
代码的含义都在注释里面,就不啰嗦讲解了。
跑起来是这个样子:
点击两下按钮测试点击事件,控制台输出:
好的,GUI界面设计完毕,下面来为两个按钮编写点击事件。
首先要解决的一个问题是“目标文件”。由于题目中没有提到目标文件是否需要从文件系统中选取产生,那么我们不妨暂时将目标文件地址直接在代码中,令private static final String TARGET_FILE= "./temp.txt";
那么在初始化页面时就应该先创建这个文件路径对应的file对象:
//目标文件private File targetFile;...//创建目标文件对象targetFile = new File(TARGET_FILE);if(targetFile.createNewFile()) {System.out.println("文件不存在,创建成功");}else {System.out.println("文件存在");}
这里需要注意几个问题:
创建目标文件需要使用createNewFile()
方法,而非mkdir()
方法。否则会创建成为文件夹而非文件
createNewFile()方法会抛出一个IOException,为了便于处理,这里直接选择将异常从构造方法和主方法中抛出;
处理好目标文件问题,两次启动程序,可以看到控制台输出:
哦吼,文件处理成功。
接着,就是在为两个按钮添加点击事件。在下面的处理中,对于IO流的选择,我们统一选择字符流.
首先是读档按钮,它的点击事件逻辑大致为:
创建目标文件的输入字符流
从输入流中读取文件中的内容并形成结果
关闭输入流
将读入的结果显示在文本显示区中
实现成为代码:
//读入文件按钮点击事件loadButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {try {//字符读入流FileReader reader = new FileReader(targetFile);//读入缓冲区char[] buffer = new char[1024];//读入结果StringBuffer result = new StringBuffer();//每次读入缓冲区的长度int len;//从读入流中读取文件内容并形成结果while((len = reader.read(buffer)) != -1) {result.append(buffer,0,len);}//关闭读入流reader.close();//更新文本显示区内容textArea.setText(result.toString());System.out.println("读档成功");} catch (FileNotFoundException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}});
在目标文件中写下Hello World!!
,运行程序,点击load
:
nice~~
好的,接下来就剩下最后一项任务了,完成存档!
存档按钮的点击事件应该为:
打开目标文件字符输出流
获取当前文本显示区的内容
将文本显示区的内容通过输出流写入文件
关闭输出流
清空文本显示区
哦吼,最后一条是我加上去的,其实不清空也可以。
代码实现如下:
//保存文件按钮点击事件saveButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {try {//打开文件字符输出流FileWriter writer = new FileWriter(targetFile);//获取文本显示区文本String result = textArea.getText();//写入文件writer.write(result);//关闭输出流writer.close();//清空文本显示区内容textArea.setText("");System.out.println("存档成功");} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}});
在文本显示区中输入Hello Java!!
,点击save
:
啥?你说文本框里面啥也没有?对,因为最后把内容清空了!
四、全部代码
好了,实现了上面的全部功能,最后把代码汇总在这里:
(谨慎抄袭哦)
import java.awt.Container;import java.awt.FlowLayout;import java.awt.TextArea;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import javax.swing.JButton;import javax.swing.JFrame;public class GUIDemo extends JFrame{private static final String TARGET_FILE = "./temp.txt";//三个组件private JButton saveButton;private JButton loadButton;private TextArea textArea;//容器private Container container;//目标文件private File targetFile;public GUIDemo() throws IOException {//设置titlesuper("File Demo");//设置流布局setLayout(new FlowLayout());//获取容器container = getContentPane();//创建目标文件对象targetFile = new File(TARGET_FILE);if(targetFile.createNewFile()) {System.out.println("文件不存在,创建成功");}else {System.out.println("文件存在");}//三个组件textArea = new TextArea();saveButton = new JButton("save");loadButton = new JButton("load");//保存文件按钮点击事件saveButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {try {//打开文件字符输出流FileWriter writer = new FileWriter(targetFile);//获取文本显示区文本String result = textArea.getText();//写入文件writer.write(result);//关闭输出流writer.close();//清空文本显示区内容textArea.setText("");System.out.println("存档成功");} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}});//读入文件按钮点击事件loadButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {try {//字符读入流FileReader reader = new FileReader(targetFile);//读入缓冲区char[] buffer = new char[1024];//读入结果StringBuffer result = new StringBuffer();//每次读入缓冲区的长度int len;//从读入流中读取文件内容并形成结果while((len = reader.read(buffer)) != -1) {result.append(buffer,0,len);}//关闭读入流reader.close();//更新文本显示区内容textArea.setText(result.toString());System.out.println("读档成功");} catch (FileNotFoundException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}});//装填三个组件container.add(textArea);container.add(loadButton);container.add(saveButton);//调整大小setSize(500, 300);//显示setVisible(true);}public static void main(String[] args) throws IOException {GUIDemo demo = new GUIDemo();demo.setDefaultCloseOperation(EXIT_ON_CLOSE);}}
常用的java框架有哪些
1.SpringMVC,Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架。2.Shiro,Apache Shiro是Java的一个安全框架。3.Mybatis,MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。4.Dubbo,Dubbo是一个分布式服务框架。5.Maven,Maven是个项目管理和构建自动化工具。6.RabbitMQ,RabbitMQ是用Erlang实现的一个高并发高可靠AMQP消息队列服务器。7.Ehcache,EhCache 是一个纯Java的进程内缓存框架。
以上就是怎么在Java中使用GUI实现文本文件,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网行业资讯频道。