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多行了,有点强,我的话就做简单点吧,其实要完成还需要花很多时间,所以我只在文件里面实现了两个简单的功能,那就是打开和保存这两个事件处理,当然如果要实现其他的三个,一葫芦画瓢都差不多,其它的菜单有机会就去实现,因为现在要搞程序设计了。总体来说还是有点挑战性的。

课程总结

这周学习了菜单组件,然后里面有很多类和一些方法,这些类可以帮助我们完成图形界面以及一些按钮键的处理,学习了这些东西感觉还是良好的,但是不够熟练,必须多练习多查资料才会学得更深。在目前来说,学习的东西越来越多,所以需要不断去接触一些新的东西来扩充自己,继续努力。


posted @ 2019-11-22 16:57  刘彭  阅读(194)  评论(0编辑  收藏  举报