zoukankan      html  css  js  c++  java
  • 第十七周周总结 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();
                       }
    }
    
  • 相关阅读:
    《游戏引擎架构》笔记十二
    《游戏引擎架构》笔记十一
    《游戏引擎架构》笔记十
    《游戏引擎架构》笔记九
    《游戏引擎架构》笔记八
    《游戏引擎架构》笔记七
    2000行代码实现软渲染引擎
    C++ 构造函数或析构函数调用虚函数
    C++ protected访问权限思考
    堆排序
  • 原文地址:https://www.cnblogs.com/shsy/p/12045995.html
Copyright © 2011-2022 走看看