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简单类与对象 实验目的 掌握类的定义,熟悉属性.构造函数.方 ...
随机推荐
- 用DevExpress.textEdit控件限定数据录入格式
例:只允许输入4位数字 第一步 第二部 例:只允许IP格式 设置Mask属性项的EditMask属性值为:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5 ...
- @Data注解使用后get set报错解决方法
Maven项目中已经导入相关的lombok.jar包但是使用后仍提示无set/get方法 .在idea中安装如下插件,安装后重启idea可用不报错. 转载于:https://www.cnblogs.c ...
- META标签的设置
㈠定义及用法 ⑴<meta> 元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词. ⑵<meta> 标签位于文档的头部,不 ...
- 我在做评论功能时学到的js一些思路
在提交评论的时候,如何判断是一级评论还是二级评论(因为都是通过一个文本域提交评论),思路:声明一个全局变量,如果是回复(二级评论)那么会触发点击回复事件,在这个事件的回调函数里给全局变量设置为true ...
- python re.match与re.search的区别
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None:而re.search匹配整个字符串,直到找到一个匹配. #!/usr/bin/python impor ...
- TTTTTTTTTTT hdu 1520 Anniversary party 生日party 树形dp第一题
Anniversary party Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- AHOI/HNOI2017 礼物
题目链接:戳我 对于题目中给的式子:(大家暂且把\(y_i\)当作\(y_{i+k}\)来看啦qwq) \(\sum_{i=1}^{n}(x_i-(y_i+c))^2\) \(=\sum_{i=1}^ ...
- vue-cli的基础构造
1,项目目录 2, bulid 下文件及目录 3,config下文件及目录 接下来说说vue-cli项目中页面相关的主要文件^o^ 首先是index.html: 说明:一般只定义一个空的根节点,在ma ...
- spark RDD 的基本操作
好记性不如烂笔头,分享一下 Spark是一个计算框架,是对mapreduce计算框架的改进,mapreduce计算框架是基于键值对也就是map的形式,之所以使用键值对是人们发现世界上大部分计算都可以使 ...
- kali修改更新源及更新
进入源文件进行修改 leafpad /etc/apt/sources.list (其实系统本身就自带了更新源,去掉其注释也是可以的,现在官方源的下载速度也还ok,下面的三选一亦可) #kali官方源 ...