Java Swing菜单与文件操作练习题解析
题目代码分析
以下是需要补全的Java Swing代码,功能是创建一个带菜单的Swing应用程序,实现保存文本到文件和退出功能:
//**********Found**********
import java._________.*;
import java.awt.event.* ;
import javax.swing.*;
//**********Found**********
public class Java_3 __________________{
JTextArea ta;
JFrame frame ;
public static void main(String args[ ]){
Java_3 fr = new Java_3();
fr.frameAndMenu();
}
void frameAndMenu(){
frame = new JFrame();
frame.setSize(200,150);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("Menu");
JMenuItem menuItemSaveFile = new JMenuItem("SaveFile");
//**********Found**********
menuItemSaveFile.addActionListener(_________);
JMenuItem menuItemExit = new JMenuItem("Exit");
//**********Found**********
__________________.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
menu.add(menuItemSaveFile);
menu.add(menuItemExit);
//**********Found**********
menuBar.add(______________);
frame.setJMenuBar(menuBar);
ta = new JTextArea(3,20);
frame.add(ta);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocation(600, 300);
frame.setVisible(true);
}
public void actionPerformed(ActionEvent event){
try{
FileWriter out = new FileWriter("java_3.txt");
//**********Found**********
String str = _________.getText();
out.write(str);
out.close();
} catch( Exception e){ }
ta.setText(" ");
}
}
空白处解析
第一个空白处:
import java._________.*;
- 解析:代码中使用了
FileWriter
类,该类属于java.io
包 - 答案:
io
- 解析:代码中使用了
第二个空白处:
public class Java_3 __________________
- 解析:类中实现了
actionPerformed
方法,需要实现ActionListener
接口来处理事件 - 答案:
implements ActionListener
- 解析:类中实现了
第三个空白处:
menuItemSaveFile.addActionListener(_________);
- 解析:为"SaveFile"菜单项添加事件监听器,当前类实现了ActionListener接口,所以使用this
- 答案:
this
第四个空白处:
__________________.addActionListener(...)
- 解析:为"Exit"菜单项添加事件监听器,应使用该菜单项对象
- 答案:
menuItemExit
第五个空白处:
menuBar.add(______________);
- 解析:将创建的菜单添加到菜单栏中
- 答案:
menu
第六个空白处:
String str = _________.getText();
- 解析:获取文本区域中的内容,文本区域对象是
ta
- 答案:
ta
- 解析:获取文本区域中的内容,文本区域对象是
完整正确代码
Java Swing菜单与文件操作基础教程
在Java GUI编程中,Swing组件库提供了丰富的界面元素,结合文件操作可以创建功能完善的桌面应用。本文通过一个完整示例,讲解如何使用Swing创建菜单和进行基本的文件操作。
1. 程序功能概述
这个程序创建了一个简单的文本编辑器,包含以下功能:
- 一个窗口界面,带有文本输入区域
- 一个菜单栏,包含"Menu"菜单
- "Menu"菜单下有两个选项:"SaveFile"用于保存文本到文件,"Exit"用于退出程序
2. 核心技术点解析
2.1 Swing菜单组件体系
Swing中菜单相关的核心组件包括:
JMenuBar
:菜单栏,作为所有菜单的容器JMenu
:菜单,可包含菜单项JMenuItem
:菜单项,用户可点击的具体选项
创建菜单的基本步骤:
- 创建
JMenuBar
对象作为菜单栏 - 创建
JMenu
对象作为菜单 - 创建
JMenuItem
对象作为菜单项 - 将菜单项添加到菜单,将菜单添加到菜单栏
- 通过
setJMenuBar()
方法将菜单栏添加到窗口
2.2 事件处理机制
Swing使用监听器模式处理用户交互事件:
- 实现
ActionListener
接口,重写actionPerformed()
方法处理事件 - 使用
addActionListener()
方法为组件注册监听器
示例中展示了两种事件处理方式:
- 当前类实现
ActionListener
接口(用于"SaveFile"菜单项) - 使用匿名内部类(用于"Exit"菜单项)
2.3 文件写入操作
使用java.io.FileWriter
类进行文件写入:
FileWriter out = new FileWriter("java_3.txt");
out.write(str); // 写入内容
out.close(); // 关闭文件流
文件操作必须放在try-catch
块中,以处理可能的IO异常。
3. 程序运行流程
- 程序启动时,
main
方法创建Java_3
实例并调用frameAndMenu()
方法 frameAndMenu()
方法完成以下工作:- 创建并配置主窗口(
JFrame
) - 创建菜单栏、菜单和菜单项
- 为菜单项注册事件监听器
- 创建文本区域(
JTextArea
)并添加到窗口 - 设置窗口可见
- 创建并配置主窗口(
当用户点击"SaveFile"时:
- 触发
actionPerformed()
方法 - 获取文本区域内容并写入到"java_3.txt"文件
- 清空文本区域
- 触发
当用户点击"Exit"时:
- 调用
System.exit(0)
终止程序
- 调用
4. 代码改进建议
这个基础示例可以从以下几个方面进行改进:
异常处理优化:
- 增加具体的异常信息提示,而不是空的
catch
块 - 使用
JOptionPane
显示错误信息
- 增加具体的异常信息提示,而不是空的
文件操作增强:
- 使用
JFileChooser
提供图形化文件选择对话框 - 增加文件读取功能
- 使用
try-with-resources
自动关闭文件流
- 使用
界面改进:
- 增加更多编辑功能(复制、粘贴等)
- 改进布局管理,使界面更美观
- 增加状态栏显示保存状态等信息
通过这个示例,我们学习了Swing菜单系统的创建、事件处理机制的应用以及基本的文件写入操作。这些知识是Java桌面应用开发的基础,掌握它们可以帮助你构建更复杂的GUI程序。