• 第十三周课程总结


    记事本
    一:实验代码

    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

  • 相关阅读:
    155. 最小栈
    160. 相交链表
    PAT 1057 Stack
    PAT 1026 Table Tennis
    PAT 1017 Queueing at Bank
    PAT 1014 Waiting in Line
    PAT 1029 Median
    PAT 1016 Phone Bills
    PAT 1010 Radix
    PAT 1122 Hamiltonian Cycle
  • 原文地址:https://www.cnblogs.com/tzmad/p/11913632.html
Copyright © 2020-2023  润新知