第十三周

记事本
代码

package Beng;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.io.*;
import javax.swing.*;

public class Bz implements ActionListener {

    JFrame frame;
    JMenuBar bar;
    JMenu fileMenu, editMenu;
    JMenuItem newItem, openItem, saveItem, saveasItem, closeItem;
    ImageIcon newIcon, openIcon, saveIcon, saveasIcon, closeIcon;
    JScrollPane scroll;
    JTextArea area;
    JFileChooser chooser;
    File file;

    public Bz() {
        frame = new JFrame("记事本");
        bar = new JMenuBar();
        fileMenu = new JMenu("文件");
        editMenu = new JMenu("编辑");
        newIcon = new ImageIcon("f:" + File.separator + "tupian" + File.separator + "1.png");
        openIcon = new ImageIcon("f:" + File.separator + "tupian" + File.separator + "2.png");
        saveIcon = new ImageIcon("f:" + File.separator + "tupian" + File.separator + "3.png");
        saveasIcon = new ImageIcon("f:" + File.separator + "tupian" + File.separator + "4.png");
        closeIcon = new ImageIcon("f:" + File.separator + "tupian" + File.separator + "5.png");
        newItem = new JMenuItem("新建(N)", newIcon);
        openItem = new JMenuItem("打开(O)", openIcon);
        saveItem = new JMenuItem("保存(S)", saveIcon);
        saveasItem = new JMenuItem("另存为(A)", saveasIcon);
        closeItem = new JMenuItem("关闭(X)", closeIcon);
        area = new JTextArea();
        scroll = new JScrollPane(area);

        newItem.setMnemonic(KeyEvent.VK_N);
        openItem.setMnemonic(KeyEvent.VK_O);
        saveItem.setMnemonic(KeyEvent.VK_S);
        saveasItem.setMnemonic(KeyEvent.VK_A);
        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_S, InputEvent.CTRL_DOWN_MASK));
        saveasItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, 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(saveasItem);
        fileMenu.addSeparator();
        fileMenu.add(closeItem);

        newItem.addActionListener(this);
        openItem.addActionListener(this);
        saveItem.addActionListener(this);
        saveasItem.addActionListener(this);
        closeItem.addActionListener(this);

        bar.add(fileMenu);
        bar.add(editMenu);

        frame.setJMenuBar(bar);
        frame.add(scroll);
        frame.setSize(600, 450);
        frame.setVisible(true);

    }

    public void actionPerformed(ActionEvent event){
        
        Object obj=event.getSource();
        if(obj instanceof JMenuItem) {
            JMenuItem item=(JMenuItem) obj;
            if(item == newItem) {
                new Bz();
            }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) {
                if(file!=null) {
                    try {
                        PrintStream out = new PrintStream(new FileOutputStream(file));
                        out.print(this.area.getText());
                        out.close();
                    } catch (FileNotFoundException e) {
                        
                        e.printStackTrace();
                    }
                }
                
            }else if(item == saveasItem) {
                chooser.showSaveDialog(null);
                file = chooser.getSelectedFile();
                if(!file.exists()) {
                    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);
        }
    }
  }
}
public class Test {

	public static void main(String[] args) {
		new Bz();

	}

}

运行结果截图

学习笔记

键盘事件及监听处理:
在Swing的事件处理中可以对键盘的操作进行监听,直接使用KeyListener接口即可,KeyListener接口方法见书p684 表18-25。
如想取得键盘键入的内容,可通过KeyEvent取得,KeyEvent事件常用方法见书p648 表18-28。
鼠标事件及监听处理:
对鼠标操作监听,如鼠标按下松开等,使用MouseListener接口,此接口定义方法见书p686 表18-27。
在鼠标事件触发后都会产·生MouseEvent事件,可从中得到鼠标的相关操作,MouseEvent事件的常用方法见书p687 表18-28。
鼠标拖拽事件及监听处理:
可用MouseMotionListener接口完成鼠标拖拽操作,接口方法如下
vido mouseDragged(MouseEvent e) 在组建上按下并拖动时调用
vido mouseMoved(MouseEvent e)    鼠标移动到组件时调用
单选钮:JRadioButton
 一种常见输入组件,可实现N选一功能。
在Swing中可以使用JRadioButton完成一组单选钮的操作,JRadioButton类常用方法见书p691 表18-30。
JRadioButton事件处理:
可以使用ItemListener接口进行事件的监听,此方法中存在ItemEvent事件,ItemListener接口方法见书p693 表18-31,ItemEvent类常用方法见同页表18-32。
菜单组件:
JMenu与JMenuBar:若要Java中实现记事本类菜单,可使用JMenu组件要使用JMenuBar组件。JMenuBar功能为摆放JMenu组件,JMenuBar的常用方法见书p709表18-41。
JMenultem:使用JMenultem可以为菜单中加入菜单项,JMenultem类的常用方法见书p711 表18-43。
posted @ 2019-11-22 15:12  hshsr  阅读(129)  评论(0编辑  收藏  举报