首页 > 其他 > 详细

第十四周课程总结

时间:2019-11-29 21:18:38      阅读:86      评论:0      收藏:0      [点我收藏+]

实验报告(简单记事本的实现)

实验任务详情:

完成简单记事本的练习。

(1)实验代码:

package 测试;
 
import java.awt.EventQueue;
import java.awt.FileDialog;

import javax.swing.JFrame;
import javax.swing.JMenu;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.JMenuBar;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;

import javax.swing.JScrollPane;
import javax.swing.JMenuItem;
     
public class NotePad {
    private JFrame frame;
    private JTextArea text;
        private File file;
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                try {
                    NotePad window = new NotePad();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }


    public NotePad() {
        initialize();
        }

    private void initialize() {
        frame = new JFrame("记事本");
        frame.setBounds(100, 100, 960, 720);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        JMenuBar menuBar = new JMenuBar();
        frame.setJMenuBar(menuBar);
        
        JMenu mne = new JMenu("\u6587\u4EF6(F)");
        menuBar.add(mne);
            
        JMenuItem new_new = new JMenuItem("\u65B0\u5EFA");
        mne.add(new_new);
        //监听和处理新建
        new_new.addActionListener(new ActionListener() {
            
            public void actionPerformed(ActionEvent e) {
                    int ret = JOptionPane.showOptionDialog(null, "已经打开的文件尚未保存,需要保存吗?", "提示", 
                        JOptionPane.YES_NO_CANCEL_OPTION,
                        JOptionPane.WARNING_MESSAGE, null, null, null);
                if(ret == JOptionPane.NO_OPTION){
                    
                    text.setText(null);
                }
                if(ret == JOptionPane.YES_OPTION){
                    
                    //new JFileChooser();
                    FileDialog fd = new FileDialog(frame, "保存", FileDialog.SAVE);
                    
                    if(file==null)
                    {
                        fd.setVisible(true);
                            String dirPath = fd.getDirectory();
                        String fileName = fd.getFile();
                        if(dirPath==null || fileName==null)
                            return ;
                        file = new File(dirPath,fileName);
                    }
                    try
                    {
                        BufferedWriter bufw  = new BufferedWriter(new FileWriter(file));
                        String text1 = text.getText();
                        bufw.write(text1);
                        bufw.close();
                    }
                    catch (IOException ex)
                    {
                        throw new RuntimeException();
                    }
                        text.setText(null);
                    
                }
            }
            });
        
            
        JMenuItem open = new JMenuItem("\u6253\u5F00");
            mne.add(open);
        //监听和处理打开
            open.addActionListener(new ActionListener() {
                
            public void actionPerformed(ActionEvent e) {
                    FileDialog fd = new FileDialog(frame, "打开", FileDialog.LOAD);
                fd.setVisible(true);
                String dir = fd.getDirectory();
                String f = fd.getFile();
                File f_open = new File(dir, f);
                try {
                    BufferedReader buf = new BufferedReader(new FileReader(f_open));
                    
                    String line = null;
                    while((line=buf.readLine())!=null) {
                        
                        text.append(line+"\r\n");
                        }
                    buf.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
                }
            });
        
        JMenuItem save = new JMenuItem("\u4FDD\u5B58");
        mne.add(save);
        //监听和处理保存
        save.addActionListener(new ActionListener() {
                
            public void actionPerformed(ActionEvent arg0) {
                FileDialog fd = new FileDialog(frame, "保存", FileDialog.SAVE);
                fd.setVisible(true);
                String dir = fd.getDirectory();
                String f = fd.getFile();
                File file = new File(dir, f);
                    
                try {
                        BufferedWriter buf = new BufferedWriter(new FileWriter(file));
                        
                        String s = text.getText();
                    buf.write(s);
                        buf.close();
                } catch (IOException e) {
                        e.printStackTrace();
                }
                }
            });
            
            JMenuItem exit = new JMenuItem("\u9000\u51FA");
        mne.add(exit);
            //监听和处理退出
            exit.addActionListener(new ActionListener() {
                
                public void actionPerformed(ActionEvent arg0) {
                    String s = text.getText();
                    if(s==null) {
                        System.exit(0);
                    }
                    else {
                        int ret = JOptionPane.showOptionDialog(null, "是否将更改保存到 无标题?", "记事本", 
                            JOptionPane.YES_NO_CANCEL_OPTION,
                                JOptionPane.WARNING_MESSAGE, null, null, null);
                    if(ret == JOptionPane.NO_OPTION){
                            
                            System.exit(0);
                        }
                        if(ret == JOptionPane.YES_OPTION){
                        
                            FileDialog fd = new FileDialog(frame, "保存", FileDialog.SAVE);
                            fd.setVisible(true);
                            String dir = fd.getDirectory();
                            String f = fd.getFile();
                        File file = new File(dir, f);
                            
                        try {
                            BufferedWriter buf = new BufferedWriter(new FileWriter(file));
                                
                                String s1 = text.getText();
                                buf.write(s1);
                                buf.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        System.exit(0);
                        }
                }
                
                }
        });
        
        JScrollPane scrollPane = new JScrollPane();
            frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
            
            text = new JTextArea();
            scrollPane.setViewportView(text);
    }
        

    }

(2)实验运行结果截图:

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

(3)实验中遇到的问题:

做这个记事本,我发现自己对于这些代码的运用还不太熟练,出现了大量的错误,勉强完成了这个代码,但是还是会有些bug,比如说读取的时候有时候会出现乱码,不太清楚应该如何解决.实力不行,还需再练.

第十四周课程总结

这周主要学习了JDBC

这周学习的内容:

1.JDBC

  • JDBC(Java Database Connectivity,Java数据库连接),提供了一种与平台无关的用于执行SQL语句的标准Java API,可以方便的实现多种关系型数据库的统一操作,它由一组用Java语言编写的类和接口组成。
  • 在实际开发中可以直接使用JDBC进行各个数据库的连接与操作,而且可以方便的向数据库中发送各种SQL命令。在JDBC中提供的是一套标准的接口,这样,各个支持JAVA的数据库生产商只要按照此接口提供相应的实现,则就都可以使用JDBC进行操作。极大的体现了JAVA的可移植性的设计思想。

2.JDBC驱动分类

JDBC本身提供的是一套数据库操作标准,而这些标准又需要各个数据库厂商实现,所以针对于每一个数据库厂商都会提供一个JDBC的驱动程序,目前比较常见的JDBC驱动程序可分为以下四类:

(1).JDBC-ODBC桥驱动

JDBC-ODBC是SUN提供的一个标准的JDBC操作,直接利用微软的ODBC进行数据库的连接操作,但是,这种操作性能较低,所以通常情况下是不推荐使用这种方式进行操作的。
技术分享图片

(2).JDBC本地驱动

直接使用各个数据库生产商提供的JDBC驱动程序,但是因为其只能应用在特定的数据库上,会丧失掉程序的可移植性,但是这样操作的性能较高。
技术分享图片

(3).JDBC网络驱动

这种驱动程序将JDBC转换为与DBMS无关的网络协议,之后这种协议又被某个服务器转换为一种DBMS协议。这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上。所用的具体协议取决于提供者。通常,这是最为灵活的JDBC驱动程序。

(4).本地协议纯JDBC驱动

这种类型的驱动程序将JDBC调用直接转换为DBMS所使用的网络协议。这将允许从客户机机器上直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。

3.JDBC的主要操作类及接口

技术分享图片

技术分享图片

4.JDBC操作步骤

数据库安装并配置完成之后,就可以按照以下的步骤进行数据库的操作了:

  • 1.加载数据库驱动程序:各个数据库都会提供JDBC的驱动程序开发包,直接把JDBC操作所需要的开发包(一般为.jar或.zip)直接配置到classpath路径即可。
  • 2.连接数据库:根据各个数据库的不同,连接的地址也不同,此连接地址将由数据库厂商提供,一般在使用JDBC连接数据库的时候都要求用户输入数据库连接的用户名和密码,本章使用的是mysql数据库,所以用户名为“root”,密码为“mysqladmin”,用户在取得连接之后才可以对数据库进行查询或更新的操作。
  • 3.使用语句进行数据库操作:数据库操作分为更新和查询两种操作,除了可以使用标准的SQL语句之外,对于各个数据库也可以使用其自己提供的各种命令。
  • 4.关闭数据库连接:数据库操作完毕之后需要关闭连接以释放资源。

5.连接及关闭数据库

数据库驱动程序可以正常加载的话,下面就可以连接数据库了,使用DriverManager类进行连接操作,DriverManager类中的常用方法如下
技术分享图片
DriverManager说明
在DriverManager中,提供的主要操作就是得到一个数据库的连接,getConnection()方法就是取得连接对象,此方法返回的类型是Connection对象,不管使用那种方式连接,都必须提供一个数据库的连接地址,如果在连接数据库的时候需要用户名和密码,则还需要将用户名和密码设置上。
MySQL数据库的连接地址格式

jdbc:mysql://IP地址:端口号/数据库名称

通过DriverManager取得Connection对象之后,实际上就表示数据库连接上了,连接上数据库之后就可以进行数据库的更新及查询操作,但是操作的最后数据库连接必须关闭。
Connection接口的常用方法
技术分享图片
技术分享图片

第十四周课程总结

原文:https://www.cnblogs.com/zhuwanxing/p/11959977.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!