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第十一次实验报告的更多相关文章

  1. 2019JAVA第七次实验报告

    Java实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019.10.25 评分等级 实验任务详情: 完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)1 ...

  2. 2019JAVA第六次实验报告

    Java实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019.10.18 评分等级 实验四 类的继承 实验目的 理解异常的基本概念: 掌握异常处理方法及熟悉常见异常的捕获 ...

  3. 2019JAVA第五次实验报告

    Java实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间2019/10/11 评分等级 实验四 类的继承 实验目的 理解抽象类与接口的使用: 了解包的作用,掌握包的设计方法. ...

  4. 2019JAVA第四次实验报告

    JAVA实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019/9/29 评分等级 实验四 类的继承 1.实验目的 掌握类的继承方法: 变量的继承和覆盖,方法的继承.重载和 ...

  5. 2019JAVA第三次实验报告

    Java实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019.9.24 评分等级 实验三 String类的应用 一.实验目的 掌握类String类的使用: 学会使用JDK ...

  6. 2019JAVA第八次实验报告

    班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019.11.1 评分等级 课程作业: 将奇数位小写字母改写为大写字母(用文件输出) 实验代码: package Domon7; im ...

  7. 2019JAVA第十次实验报告

    Java实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019.11.15 评分等级 实验代码 package Domon9; import java.awt.Font; ...

  8. 2019JAVA第九次实验报告

    Java实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019.11.8 评分等级 课程总结 1.实验代码 package Domon8; import java.awt. ...

  9. 2019JAVA第二次实验报告

    Java实验报告 班级 计算机科学与技术二班 学号 20188442 姓名 吴怡君 完成时间 2019/9/19 评分等级 实验二 Java简单类与对象 实验目的 掌握类的定义,熟悉属性.构造函数.方 ...

随机推荐

  1. ES使用中的总结整理

    最近项目中使用了ES搜索,开始时自己搭建了ES环境做测试,后面申请了公司的云平台应用, 对接ES的过程中颇具波折,遇到了很多问题,在这里统一整理记录下: 1,ES的9200 及 9300端口说明 92 ...

  2. 线程Thread、线程池ThreadPool

    Thread调用含参方法,参数必须是object类.ThreadPool调用的方法,无论是否含参,方法必须有object类参数(可不用,但得有) [线程] using System; using Sy ...

  3. POJ 1149 猪圈买猪 建图太强大!! 没有透彻领悟 慢慢消化

    PIGS Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 19575   Accepted: 8948 Description ...

  4. KMP 串的模式匹配 (25 分)

    给定两个由英文字母组成的字符串 String 和 Pattern,要求找到 Pattern 在 String 中第一次出现的位置,并将此位置后的 String 的子串输出.如果找不到,则输出“Not ...

  5. supsplk 服务器被植入木马 挖矿 cpu使用 700%

    最近emr集群跑任务的时候总出现 task failed ,优化sql,调提交任务参数都没解决,最后再我排查时候,发现一个从节点的cpu使用800% 经过一些列排查,发现是被注入木马了, #被人种下的 ...

  6. hdu 4763 看毛片(单纯next数组的应用--纯正O(n))

    因为需要负责队内的字符串题,开始刷,做到这道,开始想不出来,上网找题解, 然后就惊了,为什么你们这么暴力都可以过的啊,1e6啊,后来又想了下会做了 贴下代码 #include <iostream ...

  7. Python 入门知识

    一python 语言介绍 特点 简单清晰明确   目前是全球最火的高级编程语言  应用领域很广 NASA FACEBOOK 谷歌 春雨医生 金山 腾讯,Python是一门解释性弱类型编程语言.编译性得 ...

  8. Java连接MQTT服务-wss方式

    特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...

  9. 后盾网lavarel视频项目---lavarel使用模型进行增删改查操作

    后盾网lavarel视频项目---lavarel使用模型进行增删改查操作 一.总结 一句话总结: 使用模型操作常用方法 查一条:$model=Tag::find($id); 删一条:Tag::dest ...

  10. Java-Thread 线程

    一.进程与线程的概念 进程和线程都是一个CPU工作时间段的描述,只是关注点不同. 进程(Process): 资源(CPU,内存等,文件,网络等)分配的基本单位.系统中有很多进程,它们都会使用内存.为了 ...