第十七周周总结 Swing

   考试系统
   1.登录功能  用户和密码存在在哪里?   文件
   2.考试功能  考试题目和答案存在哪?   文件
   3.展示功能   GUI   Graphical  User  Interface图形用户接口
             #GUI
             Java集合  String
             I/O
             文件
             c--->桌面应用程序
             c/s--->client  Server      客户端/服务器  QQ
             *B/S-->Browser Server      浏览器/服务器  淘宝

   GUI
   Graphical  User  Interface
   图形用户接口
   就是采用图形的方式,进行操作页面的展示
   AWT     (Abstract  Window toolkit)
   Swing   摆动,悬挂的意思
            AWT             Swing
   窗体     Frame           JFrame
   面板     Panel           JPanel  
   组件     Button          JButton      按钮
            Label           JLabel      标签
            TextField       JTextField  文本框
            PasswordField               密码框
                             
            TextArea        JTexArea 文本域
            JMenuBar 菜单条    JMenu 菜单      JMenuItem 菜单项 
   事件     ActionListener   动作/响应事件
            KeyListener      键盘事件

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 {//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);      //设置组合键ctrl
        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();	                 
    	                    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 static void main(String[] args) {
                   new Bz();
                   }
}
posted @ 2019-12-15 21:16  可惜她是水瓶座  阅读(180)  评论(0编辑  收藏  举报