2019JAVA第十一次实验报告
Java实验报告
班级 计科二班 学号 20188442 姓名 吴怡君
完成时间 2019.11.22
评分等级
简易记事本
实验代码
package Domon10;
import java.awt.event.*;
import java.io.File;
import java.io.OutputStream;
import java.io.PrintStream;
import javax.swing.*;
import java.io.*;
import java.util.Scanner;
class Notepad implements ActionListener {
JFrame frame = new JFrame("welcome to MLDN") ; //定义窗体
JTextArea text = new JTextArea(); //定义文本域
JMenu menuFile = new JMenu("文件");//定义JMenu组件
JMenuItem newItem;
JMenuItem openItem ;
JMenuItem saveItem ;
JMenuItem closeItem;
JMenuItem exitItem;
public Notepad(){
text.setEditable(true); //定义文本组件可以编辑
frame.getContentPane().add(new JScrollPane(text));//在面板中加入文本框以及滚动条
menuFile.setIcon(new ImageIcon("C:"+File.separator+"Users"+File.separator+"35583"+File.separator+
"Pictures"+File.separator+"file.jpg"));//定义显示图标
JMenuBar menuBar = new JMenuBar(); //定义JMenuBar
newItem = new JMenuItem("新建",new ImageIcon("C:"+File.separator+"Users"+File.separator+"35583"+File.separator+
"Pictures"+File.separator+"new.jpg"));
openItem = new JMenuItem("打开",new ImageIcon("C:"+File.separator+"Users"+File.separator+"35583"+File.separator+
"Pictures"+File.separator+"open.jpg"));
saveItem = new JMenuItem("保存",new ImageIcon("C:"+File.separator+"Users"+File.separator+"35583"+File.separator+
"Pictures"+File.separator+"save.jpg"));
closeItem = new JMenuItem("关闭",new ImageIcon("C:"+File.separator+"Users"+File.separator+"35583"+File.separator+
"Pictures"+File.separator+"close.jpg"));
exitItem = new JMenuItem("退出",new ImageIcon("C:"+File.separator+"Users"+File.separator+"35583"+File.separator+
"Pictures"+File.separator+"exit.jpg"));
newItem.setMnemonic('N');//设置快捷键
openItem.setMnemonic('O');
closeItem.setMnemonic('C');
exitItem.setMnemonic('E');
saveItem.setMnemonic('S');
newItem.setAccelerator(KeyStroke.getKeyStroke('N',java.awt.Event.CTRL_MASK));//Ctrl+N
openItem.setAccelerator(KeyStroke.getKeyStroke('O',java.awt.Event.CTRL_MASK));
closeItem.setAccelerator(KeyStroke.getKeyStroke('C',java.awt.Event.CTRL_MASK));
exitItem.setAccelerator(KeyStroke.getKeyStroke('E',java.awt.Event.CTRL_MASK));
saveItem.setAccelerator(KeyStroke.getKeyStroke('S',java.awt.Event.CTRL_MASK));
menuFile.add(newItem); //加入菜单项
menuFile.add(openItem);
menuFile.add(saveItem);
menuFile.add(closeItem);
menuFile.addSeparator(); //加入分隔线
menuFile.add(exitItem);
menuBar.add(menuFile);
frame.addWindowListener(new WindowAdapter(){ //加入监听事件
public void windowClosing(WindowEvent arg0){ //复写窗口关闭方法
System.exit(1);
}
});
openItem.addActionListener(this);
saveItem.addActionListener(this);
frame.setJMenuBar(menuBar);
frame.setSize(400, 300);
frame.setVisible(true);
frame.setLocation(300,200);
}
@Override
public void actionPerformed(ActionEvent e) { //按钮事件监听
File file = null; //接受打开文件
int result = 0; //接受操作结果
if(e.getSource()==openItem){ //判断是否是open按钮
JFileChooser fileChooser = new JFileChooser();//实例化文件选择框
text.setText(""); //清空文中的原有内容
fileChooser.setApproveButtonText("确定"); //定义确定按钮信息
fileChooser.setDialogTitle("打开文件");//设置文件选择框标题
result = fileChooser.showOpenDialog(frame);//显示打开对话框
if(result==JFileChooser.APPROVE_OPTION){ //表示选择了确定按钮
file = fileChooser.getSelectedFile();//得到选择的File对象
setText("打开的文件名称为:"+file.getName());
}else if(result == JFileChooser.CANCEL_OPTION){
setText("没有选择任何 文件");
}else{//result == JFileChooser.ERROR_OPTION
setText("操作出现错误");
}
if(file!=null){
try{
Scanner scan = new Scanner(
new FileInputStream(file));
scan.useDelimiter("\n");
while(scan.hasNext()){
text.append(scan.next()); //读取内容到文本区
text.append("\n");
}
scan.close();
}catch(Exception ex){
setText("文件读取出错");
}
}
}
if(e.getSource()==saveItem){ //判断是否是open按钮
JFileChooser fileChooser = new JFileChooser();//实例化文件选择框
text.setText(""); //清空文中的原有内容
fileChooser.setApproveButtonText("确定"); //定义确定按钮信息
fileChooser.setDialogTitle("打开文件");//设置文件选择框标题
result = fileChooser.showOpenDialog(frame);//显示打开对话框
if(result==JFileChooser.APPROVE_OPTION){ //表示选择了确定按钮
file = fileChooser.getSelectedFile();//得到选择的File对象
setText("选择的存储的文件名称为:"+file.getName());
}else if(result == JFileChooser.CANCEL_OPTION){
setText("没有选择任何 文件");
}else{//result == JFileChooser.ERROR_OPTION
setText("操作出现错误");
}
if(file!=null){
try{
PrintStream out = new PrintStream(
new FileOutputStream(file));
out.print(text.getText());
out.close();
}catch(Exception ex){
setText("文件读取出错");
}
}
}
}
private void setText(String string) {
}
}
package Domon10;
public class test {
public static void main(String[] args) {
new Notepad();
}
}
实验结果截图




小题总结
对于这周的作业,本来是要做一个记事本的,但是如果想把Windons下的记事本的一些功能全部实现,没有个一周是很难完成的,我的两个室友就是写了一周多了,现在还在继续修改,是真的很棒,他们对自己要求很高,一直在精化,他们每个人的代码差不多有800多行了,有点强,我的话就做简单点吧,其实要完成还需要花很多时间,所以我只在文件里面实现了两个简单的功能,那就是打开和保存这两个事件处理,当然如果要实现其他的三个,一葫芦画瓢都差不多,其它的菜单有机会就去实现,因为现在要搞程序设计了。总体来说还是有点挑战性的。
课程总结
这周学习了菜单组件,然后里面有很多类和一些方法,这些类可以帮助我们完成图形界面以及一些按钮键的处理,学习了这些东西感觉还是良好的,但是不够熟练,必须多练习多查资料才会学得更深。在目前来说,学习的东西越来越多,所以需要不断去接触一些新的东西来扩充自己,继续努力。


2019JAVA第十一次实验报告的更多相关文章
- 2019JAVA第七次实验报告
Java实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019.10.25 评分等级 实验任务详情: 完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)1 ...
- 2019JAVA第六次实验报告
Java实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019.10.18 评分等级 实验四 类的继承 实验目的 理解异常的基本概念: 掌握异常处理方法及熟悉常见异常的捕获 ...
- 2019JAVA第五次实验报告
Java实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间2019/10/11 评分等级 实验四 类的继承 实验目的 理解抽象类与接口的使用: 了解包的作用,掌握包的设计方法. ...
- 2019JAVA第四次实验报告
JAVA实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019/9/29 评分等级 实验四 类的继承 1.实验目的 掌握类的继承方法: 变量的继承和覆盖,方法的继承.重载和 ...
- 2019JAVA第三次实验报告
Java实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019.9.24 评分等级 实验三 String类的应用 一.实验目的 掌握类String类的使用: 学会使用JDK ...
- 2019JAVA第八次实验报告
班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019.11.1 评分等级 课程作业: 将奇数位小写字母改写为大写字母(用文件输出) 实验代码: package Domon7; im ...
- 2019JAVA第十次实验报告
Java实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019.11.15 评分等级 实验代码 package Domon9; import java.awt.Font; ...
- 2019JAVA第九次实验报告
Java实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019.11.8 评分等级 课程总结 1.实验代码 package Domon8; import java.awt. ...
- 2019JAVA第二次实验报告
Java实验报告 班级 计算机科学与技术二班 学号 20188442 姓名 吴怡君 完成时间 2019/9/19 评分等级 实验二 Java简单类与对象 实验目的 掌握类的定义,熟悉属性.构造函数.方 ...
随机推荐
- 【JZOJ5439】【NOIP2017提高A组集训10.31】Calculate
题目 分析 对于\[\sum_{i=1}^{n}\lfloor\dfrac{T-B_i}{A_i}\rfloor\] 我们考虑拆开处理,得到 \[\sum_{i=1}^{n}(\lfloor\dfra ...
- wx小程序知识点(六)
六.生命周期 (1)onLoad —— 加载时触发,只调用一次,可用来发送请求绑定数据.获取url中参数 (2)onShow —— 页面显示时触发,每次显示都会执行,用来获取需要频繁更新的数 ...
- JAVA如何跳出多层循环
1. break.continue.return 的区别: break默认是跳出最里层的循环,也就是break所在的最近的那层循环 continue是终止本次循环,继续下次循环 return 结束当前 ...
- NOI 2019 AFO 记
Text 真的退役了... 非常抱歉 这篇文章暂时咕掉了
- matplotlib绘图时显示额外的“figure”浮窗
引自 https://blog.csdn.net/weixin_41571493/article/details/82690052 问题:现在默认的Pycharm绘图时,都会出现下面的情况: 不能弹出 ...
- Mybatis 结果映射下划线转驼峰
mybatis 结果映射下划线转驼峰 Spring Boot 配置: #下划线转驼峰 mybatis.configuration.map-underscore-to-camel-case=true m ...
- A. Transmigration
A. Transmigration time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- 191016Django基础
一.简单的webserver框架 from wsgiref.simple_server import make_server def login(req): #view函数 print(req[&qu ...
- CppCheck介绍与使用
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u011012932/article/details/52778149 简述 Cppcheck 是一种 ...
- 【java多线程】volatile 关键字
在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉. Java语言是支持多线程的,为了解决线程并发的问题,在语 ...