• 第十四周Java学习总结


    关于简单记事本和数据库操作

    (一)简单记事本:

    源代码:

    package com.itcast.adc.demo04;
    
    import javax.swing.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.InputEvent;
    import java.awt.event.KeyEvent;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class TextPad implements ActionListener {
        JFrame jFrame;
        JMenuBar jMenuBar;
        JMenu fileMenu,editMenu;
        JTextArea jTextArea;
        JScrollPane jScrollPane;
        ImageIcon newIcon,openIcon,saveIcon,closeIcon;
        JMenuItem newItem,openItem,saveItem,closeItem,baoItem;
        JFileChooser chooser,chooser1,chooser2;
    
        Object File;
    
    
        public TextPad(){
            jFrame=new JFrame("记事本");//创建一个窗体
            jMenuBar=new JMenuBar();//new一个菜单栏,在菜单栏里添加菜单
            fileMenu=new JMenu("文件");//新建俩个菜单
            editMenu=new JMenu("编辑");
            jTextArea=new JTextArea();//new一个多文本组件
    
            jScrollPane=new JScrollPane(jTextArea);//在文本组件上加入滚动组件
    //        newIcon=new ImageIcon("d:"+ File.separator+"images"+File.separator+);
    //        openIcon=new ImageIcon("d:"+ File.separator+"images"+File.separator+);
    //        saveIcon=new ImageIcon("d:"+ File.separator+"images"+File.separator+);
    //        closeIcon=new ImageIcon("d:"+ File.separator+"images"+File.separator+);
            //创建菜单项
            newItem=new JMenuItem("新建(N)", null);
            openItem=new JMenuItem("打开(O)", null);
            baoItem=new JMenuItem("保存(S)",null);
            saveItem=new JMenuItem("另存为(C)", null);
            closeItem=new JMenuItem("关闭(E)", null);
    
            //助记符
            newItem.setMnemonic(KeyEvent.VK_N);
            openItem.setMnemonic(KeyEvent.VK_O);
            baoItem.setMnemonic(KeyEvent.VK_S);
            saveItem.setMnemonic(KeyEvent.VK_C);
            closeItem.setMnemonic(KeyEvent.VK_E);
    
            //快捷键
            newItem.setAccelerator(KeyStroke.getKeyStroke('N', InputEvent.CTRL_MASK));
            openItem.setAccelerator(KeyStroke.getKeyStroke('O', InputEvent.CTRL_MASK));
            baoItem.setAccelerator(KeyStroke.getKeyStroke('S',InputEvent.CTRL_MASK));
            saveItem.setAccelerator(KeyStroke.getKeyStroke('C', InputEvent.CTRL_MASK));
            closeItem.setAccelerator(KeyStroke.getKeyStroke('E', InputEvent.CTRL_MASK));
    
    
            jMenuBar.add(fileMenu);//在菜单栏加菜单
            jMenuBar.add(editMenu);
            fileMenu.add(newItem);//在菜单上加菜单项
            fileMenu.add(openItem);
            fileMenu.add(baoItem);
            fileMenu.add(saveItem);
            fileMenu.addSeparator();//加入分割线
            fileMenu.add(closeItem);
    
            newItem.addActionListener(this);//给每个菜单项加入监听器!!!
            openItem.addActionListener(this);
            baoItem.addActionListener(this);
            saveItem.addActionListener(this);
            closeItem.addActionListener(this);
    
            jFrame.add(jScrollPane);
            jFrame.setJMenuBar(jMenuBar);
            jFrame.setVisible(true);
            jFrame.setLocation(180,140);
            jFrame.setSize(1100,550);
    
        }
    
        @Override
        public void actionPerformed(ActionEvent e) {
    
            Object obj=e.getSource();//获取监听事件的对象来源且是父类
            if(obj instanceof JMenuItem){//判断obj对象是否为JMenuItem的实例
                JMenuItem item=(JMenuItem) obj;//将对象转型
                if(item==newItem){
                    new TextPad();
    
                }else if (item==openItem) {
                    chooser = new JFileChooser();
                    chooser.showOpenDialog(null);
                    java.io.File file = chooser.getSelectedFile();
                    try {
                        FileInputStream f = new FileInputStream(file);
                        byte[] b = new byte[1024];
                        f.read(b);
                        jTextArea.append(new String(b));
                        f.close();
                    } catch (FileNotFoundException ex) {
                        ex.printStackTrace();
    
                    } catch (IOException ex) {
                        ex.printStackTrace();
                    }
    
                }else if ((item==saveItem)||(item==baoItem)){
                    chooser1=new JFileChooser();
                    chooser1.showSaveDialog(null);
                    java.io.File file = chooser1.getSelectedFile();
                    try {
                        if(!file.exists()){
                            file.createNewFile();
                        }
                        FileOutputStream fs=new FileOutputStream(file);
                        byte[] b=jTextArea.getText().getBytes();//重要
                        fs.write(b);
                        fs.close();
    
                    } catch (FileNotFoundException ex) {
                        ex.printStackTrace();
                    } catch (IOException ex) {
                        ex.printStackTrace();
                    }
                }else if (item==closeItem){
                    System.exit(1);
                }
            }
    
        }
    }
    package com.itcast.adc.demo04;
    
    public class Test {
        public static void main(String[] args) {
            new TextPad();
        }
    }

     运行结果截图:

     关于文件菜单的相关功能已经做出来了,接下来就是 编辑、帮助、格式等等菜单,这个我以后会继续研究!!

    相关链接: https://blog.csdn.net/wangha_1/article/details/78937248

    (二)数据库的操作(jdbc)

    1. JDBC操作步骤
      (1)加载驱动
      (2)连接数据库
      (3)通过Statement发送sql语句
      通过Prepared Statement发送sql语句
      (4)关闭数据库
    1.加载驱动程序
    public static final String DBDRIVER = "org.gjt.mm.mysql.Driver";  //MySQL中的数据库驱动程序路径
    Class.forName(DBDRIVER);   //利用class类加载驱动程序,需要处理异常
    2.连接数据库
    ........接上
    Connection conn = null;
    conn = DriverManager.getConnetion(连接地址,用户名,密码);//需处理异常
    3.执行数据库
    需要使用Statement 接口完成

      2.操作实例

  • 相关阅读:
    poj 3415 后缀数组+单调栈
    hdu 3450 后缀数组
    hdu 2774 后缀数组
    后缀数组模板(倍增法)
    hdu 4405 概率dp
    zoj 3329 概率dp
    [日常摸鱼]bzoj2875[NOI2012]随机数生成器-矩阵快速幂
    [日常摸鱼]bzoj1038[ZJOI2008]瞭望塔-半平面交
    [日常摸鱼]bzoj1007[HNOI2008]水平可见直线-半平面交(对偶转凸包)
    [日常摸鱼]bzoj3083遥远的国度-树链剖分
  • 原文地址:https://www.cnblogs.com/changanshisanzhao/p/11957834.html
Copyright © 2020-2023  润新知