广告
返回顶部
首页 > 资讯 > 后端开发 > Python >教你用Java GUI实现文本文件的读写
  • 715
分享到

教你用Java GUI实现文本文件的读写

2024-04-02 19:04:59 715人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录一、实验题目二、分析三、实现四、全部代码一、实验题目 二、分析 实验要求为: 实现一个界面,界面中包含一个文本显示区和两个按钮(存档和读档) 读档按钮作用是打

一、实验题目

在这里插入图片描述

二、分析

实验要求为:

  • 实现一个界面,界面中包含一个文本显示区和两个按钮(存档和读档)
  • 读档按钮作用是打开文件并读取内容,将内容显示在文本区中
  • 存档按钮作用是将文本区的内容写入到文件中。

简单分析一下,可以看出这样的要求奥,包含的要考察知识点主要有两个方向:

  • 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() {
		//设置title
		super("File Demo");
		
		//设置流布局
		setLayout(new FlowLayout());
		
		//获取容器
		container = getContentPane();
		
		//三个组件
		textArea = new TextArea();
		saveButton = new JButton("save");
		loadButton = new JButton("load");
		
		//保存文件按钮点击事件
		saveButton.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerfORMed(ActionEvent e) {
				
				System.out.println("存档成功");
			}
		});
		
		//读入文件按钮点击事件
		loadButton.addActionListener(new ActionListener() {
			
			@Override
			public 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("文件存在");
	}

这里需要注意几个问题:

1.创建目标文件需要使用createNewFile()方法,而非mkdir()方法。否则会创建成为文件夹而非文件

2.createNewFile()方法会抛出一个IOException,为了便于处理,这里直接选择将异常从构造方法和主方法中抛出;

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

处理好目标文件问题,两次启动程序,可以看到控制台输出:

在这里插入图片描述
在这里插入图片描述

哦吼,文件处理成功。

接着,就是在为两个按钮添加点击事件。在下面的处理中,对于IO流的选择,我们统一选择字符流.

首先是读档按钮,它的点击事件逻辑大致为:

1.创建目标文件的输入字符流

2.从输入流中读取文件中的内容并形成结果

3.关闭输入流

4.将读入的结果显示在文本显示区中

实现成为代码:


//读入文件按钮点击事件
loadButton.addActionListener(new ActionListener() {
	
	@Override
	public 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 block
			e1.printStackTrace();
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}

	}
});

在目标文件中写下Hello World!!,运行程序,点击load:

在这里插入图片描述

nice~~

好的,接下来就剩下最后一项任务了,完成存档!

存档按钮的点击事件应该为:

1.打开目标文件字符输出流

2.获取当前文本显示区的内容

3.将文本显示区的内容通过输出流写入文件

4.关闭输出流

5.清空文本显示区

哦吼,最后一条是我加上去的,其实不清空也可以。

代码实现如下:


//保存文件按钮点击事件
saveButton.addActionListener(new ActionListener() {
	
	@Override
	public 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 block
			e1.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 {
		//设置title
		super("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() {
			
			@Override
			public 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 block
					e1.printStackTrace();
				}
			}
		});
		
		//读入文件按钮点击事件
		loadButton.addActionListener(new ActionListener() {
			
			@Override
			public 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 block
					e1.printStackTrace();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.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);
	}
}

--结束END--

本文标题: 教你用Java GUI实现文本文件的读写

本文链接: https://www.lsjlt.com/news/126584.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 教你用Java GUI实现文本文件的读写
    目录一、实验题目二、分析三、实现四、全部代码一、实验题目 二、分析 实验要求为: 实现一个界面,界面中包含一个文本显示区和两个按钮(存档和读档) 读档按钮作用是打...
    99+
    2022-11-12
  • 怎么在Java中使用GUI实现文本文件
    本篇文章给大家分享的是有关怎么在Java中使用GUI实现文本文件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、实验题目二、分析实验要求为:实现一个界面,界面中包含一个文本显...
    99+
    2023-06-15
  • 教你用JAVA写文本编辑器(一)
    目录前言思路分析:具体实现总结前言 这里用swing ,awt写的。 我们大概要做成一个电脑的记事本那样的一个编辑器。可以调整字体,字号,颜色。能够打开、保存文件,新建窗口,点击退出...
    99+
    2022-11-12
  • 教你用JAVA写文本编辑器(二)
    目录这是编辑器第一章 JAVA写文本编辑器(一) ,需要的同学了解一下。 这一章我们来处理一下JMenuBar里的item的事件响应,首先从最简单的item关于开始。 为什么说这个简...
    99+
    2022-11-12
  • 教你用JAVA写文本编辑器(三)
    大家好,接下来的部分可能有点乱,但是并不复杂,我希望我能尽量给大家捋清楚思路。 老套路,这是我的前两篇系列,需要的同学了解一下: JAVA写文本编辑器(二) JAVA写文本...
    99+
    2022-11-12
  • 教你用JAVA写文本编辑器(四)
    其实写到这里,我已经差不多断气了。。。 常规套路,这里是前三篇的传送门,需要的同学可以看一下:JAVA写文本编辑器(三) JAVA写文本编辑器(二)JAVA写文本编辑器(一) 现在我...
    99+
    2022-11-12
  • java读写文本文件的步骤是什么
    Java读写文本文件的步骤如下:1. 首先,需要创建一个File对象,指定要读写的文件的路径和文件名。```javaFile fil...
    99+
    2023-08-24
    java
  • java读写文本文件的基本步骤是什么
    Java读写文本文件的基本步骤是:1. 创建一个`File`对象,用于表示要读写的文件。2. 使用`FileReader`或`Fil...
    99+
    2023-09-22
    java
  • 一文搞懂C#实现读写文本文件中的数据
    【1】首先我们定义一段假数据,这里以一个string为例字   static void Main(string[] args) { string data = "我的数据要开始...
    99+
    2022-11-12
  • VB.NET中怎么实现读写文本文件操作
    VB.NET中怎么实现读写文本文件操作,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。VB.NET读写文本文件为了把text保存到文件,创建一个基于FileStream的Stre...
    99+
    2023-06-17
  • C#读写文本文件(.txt)的方法实例
    读取txt文件 如果你要读取的文件内容不是很多,可以使用 File.ReadAllText(filePath) 或指定编码方式 File.ReadAllText(FilePath...
    99+
    2022-11-12
  • Java怎么使用字符流读写非文本文件
    今天小编给大家分享一下Java怎么使用字符流读写非文本文件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。使用字符流读取文件(...
    99+
    2023-07-06
  • Java如何使用字符流读写非文本文件
    目录使用字符流读取文件(非文本)Base64编码base64编码简介编码规则编码方式的缺点Base64在 Java 里的应用将图片转为Base64字符串进行读写字符串转base64编...
    99+
    2023-05-15
    Java字符流 字符流读写非文本
  • Android入门之读写本地文件的实现
    目录简介课程目标UI端后端代码运行效果简介 为了这个系列,我的代码已经准备到了第150天了。接下来的内容会越来越精彩,我们也越来越开始进入Android的一些高级功能上的编程了。今天...
    99+
    2022-12-20
    Android读写本地文件 Android 本地文件 Android读写文件
  • java如何实现文件读写操作
    这篇文章将为大家详细讲解有关java如何实现文件读写操作,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。File类它是文件和目录路径名的抽象表示。文件和目录是可以通过File封装成对象的。对于File而言,...
    99+
    2023-06-29
  • Java怎么实现读写文件功能
    Java中实现读写文件功能可以通过使用输入流和输出流来实现。读文件:1. 创建一个File对象,指定要读取的文件路径。2. 创建一个...
    99+
    2023-08-11
    Java
  • 使用Python读写文本文件及编写简单的文本编辑器
    学习raw_input和argv是学习读取文件的前提,你可能不能完全理解这个练习,所以认真学习并检查。如果不认真的话,很容易删除一些有用的文件。 这个练习包含两个文件,一个是运行文件ex15.py,一个是e...
    99+
    2022-06-04
    编辑器 文本文件 文本
  • C#CSV文件读写的实现
    目录为什么要用csv文件一、DataTable数据写入CSV文件二、读取CSV文件到DataTable三、修改文件名称四、CSV文件的数据写入CSV是一种通用的、相对简单的文件格式,...
    99+
    2023-03-03
    C# CSV文件读写 C# CSV 读写
  • 基于Java实现Avro文件读写功能
    目录模式(schema)与其他系统的比较Java客户端实现定义一个schema使用Java代码生成插件生成的User类进行序列化和反序列化在不生成User类的情况下直接进行序列化和反...
    99+
    2022-11-13
  • C/C++Qt基本文件读写的基本使用(2种实现)
    目录QT基本文件读写QTextStream 实现流读写文件的读写是很多应用程序具有的功能,甚至某些应用程序就是围绕着某一种格式文件的处 理而开发的,所以文件读写是应用程序开发的一个基...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作