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

    课程总结

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


  • 相关阅读:
    响应式布局设计的三大要点
    一个前端的自我修养(转载)
    JavaScript利用闭包实现模块化
    关于清除浮动的几种方法
    支持向量机(SVM)
    拉格朗日对偶问题与 KKT 条件
    朴素贝叶斯模型
    快速傅里叶变换(FFT)
    用线性代数理解 Normal Equation
    用线性代数解释图论中的一些结论
  • 原文地址:https://www.cnblogs.com/521-PENG/p/11912596.html
Copyright © 2020-2023  润新知