第十三周课程总结

记事本
一:实验代码

import java.awt.event.*;
import java.io.*;
import javax.swing.*;
public class Reader implements ActionListener {    //监听
	JFrame frame;
	JMenuBar bar;
	JMenu fileMenu;
	ImageIcon newIcon,openIcon,saveIcon,closeIcon,savesIcon;
	JMenuItem newItem,openItem , saveItem,closeItem,savesItem,obj;
	JFileChooser chooser;
	File file;
	JTextArea area;
    public Reader() {
	   frame=new JFrame("TZM");
	   bar=new JMenuBar();
	   fileMenu=new JMenu("文件");		
	   newIcon=new ImageIcon("d:"+File.separator+"tu"+File.separator+"1.png");
	   openIcon=new ImageIcon("d:"+File.separator+"tu"+File.separator+"2.png");
	   saveIcon=new ImageIcon("d:"+File.separator+"tu"+File.separator+"3.png");
	   savesIcon=new ImageIcon("d:"+File.separator+"tu"+File.separator+"3.png");
	   closeIcon=new ImageIcon("d:"+File.separator+"tu"+File.separator+"4.png");
	   newItem = new JMenuItem("新建(N)",newIcon);
	  openItem = new JMenuItem("打开(O)",newIcon);
	   saveItem = new JMenuItem("另存为(A)",newIcon);
	   savesItem = new JMenuItem("保存(B)",newIcon);
	   closeItem = new JMenuItem("关闭(X)",newIcon);
	   area=new JTextArea();
	  newItem.setMnemonic(KeyEvent.VK_N);    //快捷键
	  openItem.setMnemonic(KeyEvent.VK_O);
	  saveItem.setMnemonic(KeyEvent.VK_A);
	  savesItem.setMnemonic(KeyEvent.VK_B);
	  closeItem.setMnemonic(KeyEvent.VK_X);
	  newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_DOWN_MASK));
	  openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_DOWN_MASK));
	  saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_DOWN_MASK));
	  savesItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B,InputEvent.CTRL_DOWN_MASK));
	  closeItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_DOWN_MASK));
	  fileMenu.add(newItem);
	  fileMenu.add(openItem);
	  fileMenu.add(saveItem);
	  fileMenu.add(savesItem);
	  fileMenu.add(closeItem);
	  JScrollPane scroll =new  JScrollPane(area, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);//加滚动条
	  fileMenu.addSeparator();
	  newItem.addActionListener(this);
	  openItem.addActionListener(this);
	  saveItem.addActionListener(this);
	  savesItem.addActionListener(this);
	  closeItem.addActionListener(this);
	  bar.add(fileMenu);
	  frame.setJMenuBar(bar);
	  
	  frame.add(scroll);
	  frame.setVisible(true);
	  frame.pack();
     }
	@Override
	public void actionPerformed(ActionEvent e) {		
		Object obj= e.getSource();// 获得事件监听的对象
		if(obj instanceof JMenuItem) {
			JMenuItem item=(JMenuItem) obj;
			if(item==newItem) {       //新建
				new Reader();
			}else if(item==openItem) {            //打开
				chooser=new JFileChooser();
				chooser.showOpenDialog(null);
				file=chooser.getSelectedFile();//选择文件
				try {
					FileInputStream fis=new FileInputStream(file);
					byte[] b=new byte[fis.available()];//创建了一个和文件大小一样的缓冲区
					fis.read(b);
					area.append(new String(b));
					fis.close();
				}catch(FileNotFoundException e1) {
					e1.printStackTrace();
				}catch(IOException e1) {
					e1.printStackTrace();
				}
			}else if(item==saveItem){                //另存为
				chooser.showOpenDialog(null);
				file=chooser.getSelectedFile();
				try {
				if(!file.exists()) {
				file.createNewFile();
				}
				FileOutputStream fos=new FileOutputStream(file);
				byte[] b=area.getText().getBytes();
				fos.write(b);
				fos.close();
				}catch(IOException e1) {
						e1.printStackTrace();
				}	
			}else if(item == savesItem) {               //保存
                if(file!=null) {
                    try {
                        PrintStream out = new PrintStream(new FileOutputStream(file));
                        out.print(this.area.getText());
                        out.close();
                    } catch (FileNotFoundException e1) {
                        
                        e1.printStackTrace();
                    }
                }
                
            }else if(item==closeItem){           //关闭
				System.exit(1);
			}
                }
                
            }
        }
		

二:实验截图



总结:
这个记事本主要按照老师的方法来写的,然后在加了保存。PrintStream是I/O(输入/输出)流的一种,属于输出流,通过PrintStream可以将文字打印到文件或者网络中去,通俗点就是可以通过它把一段文字保存到文件中,或者如果是网络链接的话可以将文字发送到网络的那端。创建新的打印流,就是创建一个新的PrintStream对象,通过newPrintStream(OutStream/或者其他参数)完成。
鼠标事件及其处理:

单选钮:JRadioButton

复选框:JCheckBox

JMenuBar

JMenu

JMenuItem

posted @ 2019-11-22 19:33  心如所向  阅读(150)  评论(0编辑  收藏  举报