Java Swing 文本保存功能实战解析:界面交互与文件写入
一、原题完整代码呈现
以下是计算机二级Java考试中关于Swing界面与文件操作的典型题型,主要考察包导入、接口实现、布局管理、事件绑定及文件写入,包含5处需要填写的空白(标记为//*********Found********
):
//*********Found********
import __________;
import java.io.*;
import java.awt.event.* ;
import javax.swing.*;
//*********Found********
public class Java_2 ____________________{
JTextArea ta;
JFrame f ;
JLabel label;
JButton bt;
public static void main(String args[ ]){
Java_2 t = new Java_2();
t.go();
}
void go(){
f = new JFrame("Save data");
label = new JLabel("请输入需要保存的文本:");
ta = new JTextArea(3,20);
bt = new JButton("保存");
//*********Found********
f.add(label,____________________);
f.add(ta,BorderLayout.CENTER);
f.add(bt,BorderLayout.SOUTH);
//*********Found********
bt.____________________(this);
f.setSize(400,400);
f.pack( );
f.setVisible(true) ;
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent event){
try{
FileWriter out = new FileWriter("out.txt");
String str = ta.getText();
//*********Found********
_________________(str);
out.close();
} catch( Exception e){
}
}
}
二、空白处逐一解析与解答
1. 第一处空白:导入AWT布局相关类
答案:java.awt.*
//*********Found********
import java.awt.*;
解析:
程序中使用了BorderLayout
布局管理器(如BorderLayout.CENTER
、BorderLayout.SOUTH
),该类属于java.awt
包。通过import java.awt.*;
导入该包下的所有类(包括布局管理器、组件等),才能正常使用布局相关功能,因此填写java.awt.*
。
2. 第二处空白:实现事件监听接口
答案:implements ActionListener
//*********Found********
public class Java_2 implements ActionListener {
解析:
程序中定义了actionPerformed(ActionEvent event)
方法,用于处理"保存"按钮的点击事件。这要求当前类必须实现ActionListener
接口,才能通过bt.addActionListener(this)
将当前对象作为监听器绑定到按钮,因此填写implements ActionListener
。
3. 第三处空白:设置标签的布局位置
答案:BorderLayout.NORTH
//*********Found********
f.add(label,BorderLayout.NORTH);
解析:
程序使用BorderLayout
布局管理器,该布局将容器分为东、南、西、北、中五个区域。标签(label
)用于显示提示信息,通常放在顶部(北部),与中间的文本区域(ta
)和底部的按钮(bt
)形成合理布局,因此填写BorderLayout.NORTH
。
4. 第四处空白:绑定按钮的事件监听器
答案:addActionListener
//*********Found********
bt.addActionListener(this);
解析: addActionListener()
是JButton
的方法,用于为按钮绑定动作监听器(ActionListener
实例)。当前类Java_2
实现了ActionListener
接口,this
表示当前对象,因此调用该方法将监听器与按钮关联,填写addActionListener
。
5. 第五处空白:写入文本到文件
答案:out.write
//*********Found********
out.write(str);
解析: FileWriter
类的write(String str)
方法用于将字符串写入文件。程序中str
是从文本区域(ta
)获取的文本内容,通过out.write(str)
可将其写入out.txt
文件,因此填写out.write
。
三、完整正确代码
四、程序功能与运行说明
程序功能
该程序实现一个简单的文本保存工具,核心功能包括:
- 提供图形界面:包含提示标签、文本输入区域和"保存"按钮
- 文本输入:用户可在文本区域输入内容
- 保存功能:点击"保存"按钮将文本区域内容写入
out.txt
文件
运行说明
程序启动后,显示标题为"Save data"的窗口:
- 北部(顶部):标签"请输入需要保存的文本:"
- 中央区域:文本输入框(
JTextArea
) - 南部(底部):"保存"按钮
操作流程:
- 在文本区域输入任意内容(如"Hello, Java!")
- 点击"保存"按钮,程序将内容写入当前目录下的
out.txt
文件 - 打开
out.txt
可查看保存的文本内容
注意事项:
- 若
out.txt
已存在,新内容会覆盖原有内容 - 程序未添加异常提示,若保存失败(如权限问题)无明显反馈
- 若
五、核心知识点总结
包导入与核心类
java.awt.*
:包含BorderLayout
等布局管理器,用于界面布局java.awt.event.*
:包含ActionListener
等事件相关类,处理用户交互javax.swing.*
:提供Swing组件(JFrame
、JTextArea
等),构建图形界面java.io.*
:包含FileWriter
等文件操作类,实现文本写入
Swing界面布局
- 布局管理器:使用
BorderLayout
(默认布局),将组件按方位(北、南、中)排列 - 组件添加:
f.add(组件, 方位)
,如BorderLayout.NORTH
(北)、BorderLayout.CENTER
(中) - 窗口设置:
setSize()
设置窗口大小,pack()
自动调整大小,setVisible(true)
显示窗口
- 布局管理器:使用
事件监听机制
- 接口实现:
public class Java_2 implements ActionListener
使类具备事件处理能力 - 事件绑定:
bt.addActionListener(this)
将按钮点击事件与当前类关联 - 事件处理:
actionPerformed(ActionEvent event)
方法中实现保存逻辑,是用户交互的核心
- 接口实现:
文件写入操作
FileWriter
:用于向文件写入字符流,构造方法接收文件名(如"out.txt"
)- 写入方法:
write(String str)
将字符串写入文件 - 资源释放:
out.close()
关闭流,释放系统资源 - 异常处理:使用
try-catch
捕获文件操作可能出现的异常(如IOException
)
六、常见错误与应试技巧
常见错误分析
- 第一处空白包名错误:写成
java.awt
(缺少*
,无法导入所有类)或javax.awt.*
(包名错误) - 第二处空白接口实现错误:写成
implements ActionListener()
(加括号)或拼写错误(如ActionLister
) - 第三处空白布局方位错误:使用
BorderLayout.TOP
(非标准常量),正确方位常量为NORTH
/SOUTH
等 - 第四处空白方法名错误:写成
addActionLister
(拼写错误)或addListener
(方法名错误) - 第五处空白写入方法错误:写成
out.println(str)
(虽可写入,但题目需基础写入方法)或write(str)
(遗漏对象名out
)
- 第一处空白包名错误:写成
应试技巧
- 包导入口诀:"AWT包管布局,Swing包管组件,event包管事件,io包管文件"
- 布局管理:"BorderLayout分五区,North上South下,Center放中央"
- 事件监听三步:"实现接口→绑定监听器→重写actionPerformed"
- 文件写入模板:"创建FileWriter→调用write写内容→close关闭流→try-catch包起来"
通过本题,我们掌握了Swing界面的布局设计、事件监听的实现方式以及文件写入的基本操作。这类文本保存功能在记事本、编辑器等应用中广泛使用,考察对GUI交互与文件操作结合的综合能力,是Java编程中界面开发与IO流的重要结合点。