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. PHP开启错误提示而不是单单返回500

    方法一 修改php.ini文件和php-fpm.conf php.ini文件在我使用的发行版本/etc/php/<版本号>/cli/php.ini php-fpm.conf文件在/etc/ ...

  2. js 动态加载js 并执行

    function loadJS(url, success) { var domScript = document.createElement('script'); domScript.src = ur ...

  3. [Flask]celery异步任务队列的使用

    Celery异步任务队列 目录结构树: 配置文件config.py: # 设置中间人地址 broker_url = 'redis://127.0.0.1:6379/1' 主main.py: impor ...

  4. unittest详解(一) unittest初识

    unittest是python内置的一个单元测试框架,在学习怎么使用它之前,我们先来了解它的一些概念和原理. Test Case:测试用例,一个TestCase的实例就是一个测试用例.什么是测试用例呢 ...

  5. Oracle根据连续性日期的重复数据取最大或最小值日期

    原始数据: 结果数据: 对比两个图,要是不处理连续性中的重复值,我们直接可以用LEAD函数了事,但处理出来的结果貌似多余. 我的思路是先将原始数据中连续性日期有重复值的处理好,即选择最小的一个,比如2 ...

  6. docker删除容器再删除镜像

    1. 查询镜像 docker images 现在想删除第一个,ID为 99f85991949f 的镜像. docker rmi  ID 从上面看出,需要先停到ID为 67*** 的容器. 2. 查询容 ...

  7. python 安装-ERROR---Unable to find vcvarsall.bat

    系统配置:Windows10 x64, Visual Studio 2017, Python2.7.1 报错信息:error: Unable to find vcvarsall.bat 报错原因:在生 ...

  8. kali VMWOOLS的安装

    别人的教程 https://jingyan.baidu.com/article/3ea51489992f1f52e71bba45.html

  9. BootStrap之X-editable插件使用

    项目背景 刚加入公司的新项目,主要在做开发工作.由于是新手,本周的工作是配合另外一个同事写前台页面.前台框架是Bootstrap,本文主要介绍一下项目需求的一个功能——表格行内编辑事件. 使用X-ed ...

  10. 分布式-信息方式-ActiveMQ支持的传输协议和配置

                             ActiveMQ支持的传输协议和配置■ Connector: ActiveMQ提供的,用来实现连接通讯的功能.包括: client-to-broker ...