zoukankan      html  css  js  c++  java
  • 第十三周课程总结&实验报告

    记事本

    实验代码

    package 记事本;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.InputEvent;
    import java.awt.event.KeyEvent;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.PrintStream;
    
    import javax.swing.ImageIcon;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.KeyStroke;
    
    public class TextPad implements ActionListener {
    	JFrame frame;
    	JMenuBar bar;
    	JMenu fileMenu,editMenu;
    	JMenuItem newItem,openItem,saveItem,closeItem,memoryItem;
    	ImageIcon newIcon,openIcon,saveIcon,closeIcon,memoryIcon;
        JScrollPane scroll;
        JTextArea area;
        JFileChooser chooser;
        File file;
        JLabel label=new JLabel();
        
        public TextPad() {
        	frame = new JFrame("记事本");
        	bar=new JMenuBar();
        	fileMenu=new JMenu("文件");
        	editMenu= new JMenu("编辑");
        	newIcon=new ImageIcon("d:"+File.separator+"java测试"+File.separator+"新建.png");
        	openIcon=new ImageIcon("d:"+File.separator+"java测试"+File.separator+"打开.png");
        	saveIcon=new ImageIcon("d:"+File.separator+"java测试"+File.separator+"另存为.png");
        	closeIcon=new ImageIcon("d:"+File.separator+"java测试"+File.separator+"关闭.png");
        	memoryIcon=new ImageIcon("d:"+File.separator+"java测试"+File.separator+"存储.png");
        	newItem=new JMenuItem("新建(N)",newIcon);
        	openItem=new JMenuItem("打开(O)",openIcon);
        	saveItem=new JMenuItem("另存为(A)",saveIcon);
        	closeItem=new JMenuItem("关闭(X)",closeIcon);
        	memoryItem=new JMenuItem("存储(S)",memoryIcon);
        	area=new JTextArea();
        	scroll=new JScrollPane(area);
        	
        	newItem.setMnemonic(KeyEvent.VK_N);
        	openItem.setMnemonic(KeyEvent.VK_O);
        	saveItem.setMnemonic(KeyEvent.VK_A);
        	closeItem.setMnemonic(KeyEvent.VK_X);
        	memoryItem.setMnemonic(KeyEvent.VK_S);
        	
        	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));
        	closeItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_DOWN_MASK));
        	memoryItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_DOWN_MASK));
        	
        	fileMenu.add(newItem);
        	fileMenu.add(openItem);
        	fileMenu.add(memoryItem);
        	fileMenu.add(saveItem);
        	fileMenu.addSeparator();
        	fileMenu.add(closeItem);
        	
        	newItem.addActionListener(this);
        	openItem.addActionListener(this);
        	saveItem.addActionListener(this);
        	closeItem.addActionListener(this);
        	memoryItem.addActionListener(this);
        	
        	bar.add(fileMenu);
        	bar.add(editMenu);
        	
        	frame.setJMenuBar(bar);
        	frame.add(scroll);
        	frame.setSize(1080,720);
        	frame.setVisible(true);
        	
        }
        public void actionPerformed(ActionEvent event) {
        	
        	Object obj=event.getSource();
        	if(obj instanceof JMenuItem) {
        		JMenuItem item=(JMenuItem) obj;
        		if(item==newItem) {
        			new TextPad();
        		}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 e) {
        				e.printStackTrace();
        			}catch(IOException e) {
        				e.printStackTrace();
        			}
        		}else if(item==saveItem) {
        			chooser.showSaveDialog(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 e) {
        				e.printStackTrace();
        			}
        		}else if(item==closeItem) {
        			System.exit(1);
        		}else if(item==memoryItem) {
        			if(file!=null) {
        				try {
        					PrintStream out=new PrintStream(new FileOutputStream(file));
        					out.print(this.area.getText());
        					out.close();
        				}catch(Exception e) {
        					this.label.setText("文件保存异常");
        				}
        			}
        		}
        	}
        }
    }
    
    
    package 记事本;
    
    public class Test {
    
    	public static void main(String[] args) {
    		new TextPad();
    	}
    
    }
    

    运行截图




    设计思路

    基本上和老师上课讲的是一样的,
    要添加的是“保存”
    这个在菜单项、快捷方式、图标,和其他四项是差不多的,
    不同的一点是监听器,最后一个else if对保存进行操作。

    课程总结

    鼠标拖拽事件及监听处理

    在一般图形界面中经常可以看到鼠标拖拽操作的情况,在Swing的事件处理中可以使用MouseMotionListener接口完成鼠标的拖拽操作。
    此接口定义了如下所示的方法。

    单选钮JRadioButton和复选框JCheckBox

    单选钮是一种常见的输入组件,它可以实现n选一的功能,最基础的就是性别的选择。在单选钮的操作中,可以使用ItemListener接口进行事件的监听。
    把单选钮和复选框放到一起来讲,就是因为。复选框和单旋钮的区别是可以实现n选多的操作样式。

    菜单组件

    当一个界面中出现许多按钮时,可以利用菜单进行统一的管理与布局,这样可以让界面的功能更加丰富,布局也更加简洁。

    JMenu与JMenubar

    JMenubar组件的功能是用来摆放JMenu组件,当建立起多个JMenu组件之后,需要通过JMenubar组件来将JMenu组件放入窗口中。
    菜单栏和菜单的关系

    JMenuItem菜单项

    JMenuItem就是加到JMenu里,JMenuItem可以理解为一种特殊的JButton组件,当选择某个菜单项时,也会触发ActionEvent事件。

    加快捷键老师讲了一个方法。
    xxItem.setMnemonic(KeyEvent.VK_X);

    总结

    记事本老师上课已经做过一遍了,实现了文件的功能。课后的编程则需要在此之上实现保存的功能,并不是特别难。这次编程的代码行数有点多,还是要多多练习才行。

  • 相关阅读:
    [汇编与C语言关系]1.函数调用
    深入理解计算机系统
    设计模式
    深度探索C++对象模型
    More Effective C++
    MySQL必知必会
    数据结构与算法分析
    Java编程思想(后)
    Java编程思想(前十章)
    Java 入门
  • 原文地址:https://www.cnblogs.com/qiuf99999/p/11907364.html
Copyright © 2011-2022 走看看