• 第十四周课程总结&实验报告


    简单日记本的实现

    源代码

    package Book;
    
    import java.awt.FileDialog;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyEvent;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.PrintStream;
    import javax.swing.ImageIcon;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.KeyStroke;
    
    public class BookDemo implements ActionListener{
    	private JFrame frame;
    	private JMenu fileMenu,editMenu;//菜单
    	private JMenuBar bar;//存放菜单的组件
    	private JMenuItem newItem,openItem,saveItem,saveasItem,closeItem;//在菜单中创建新的菜单项
    	private JTextArea area;//定义一个文本域
    	private ImageIcon newIcon,openIcon,saveIcon,saveasIcon,closeIcon;
    	private JScrollPane scroll;//定义一个滚动条
    	JFileChooser chooser;
    	File file;
    	FileDialog savedia;
    	
    	public BookDemo(){
    		frame = new JFrame("记事本");
    		fileMenu = new JMenu("文件");
    		bar = new JMenuBar();
    		editMenu = new JMenu("编辑");
    		newItem = new JMenuItem("新建(N)");
    		openItem = new JMenuItem("打开(O)");
    		saveItem = new JMenuItem("保存(S)");
    		saveasItem = new JMenuItem("另存为(A)");
    		closeItem = new JMenuItem("关闭(X)");
    		//在菜单项上加入图片
    		newIcon = new ImageIcon("d:" + File.separator + "image1" + File.separator + "1.png");
            openIcon = new ImageIcon("d:" + File.separator + "image1" + File.separator + "2.png");
            saveIcon = new ImageIcon("d:" + File.separator + "image1" + File.separator + "3.png");
            saveasIcon = new ImageIcon("d:" + File.separator + "image1" + File.separator + "4.png");
            closeIcon = new ImageIcon("d:" + File.separator + "image1" + File.separator + "5.png");
            newItem = new JMenuItem("新建(N)", newIcon);
            openItem = new JMenuItem("打开(O)", openIcon);
            saveItem = new JMenuItem("保存(S)", saveIcon);
            saveasItem = new JMenuItem("另存为(A)", saveIcon);
            closeItem = new JMenuItem("关闭(X)", closeIcon);
    		//加入可编辑的文本域,并根据自身需要加入垂直和水平的滚动条
    		area = new JTextArea();
    		scroll = new JScrollPane(area,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    		//添加文件菜单和编辑菜单
    		bar.add(fileMenu);
    		bar.add(editMenu);
    		//在文件菜单上添加菜单项
    		fileMenu.add(newItem);
    		fileMenu.add(openItem);
    		fileMenu.add(saveItem);
    		fileMenu.add(saveasItem);
    		fileMenu.add(closeItem);
    		//添加菜单项的助记符
    		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,KeyEvent.CTRL_DOWN_MASK));
    		openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,KeyEvent.CTRL_DOWN_MASK));
    		saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,KeyEvent.CTRL_DOWN_MASK));
    		saveasItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,KeyEvent.CTRL_DOWN_MASK));
    		closeItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,KeyEvent.CTRL_DOWN_MASK));
    		//在菜单项上加入动作监听器
    		newItem.addActionListener(this);
    		openItem.addActionListener(this);
    		saveItem.addActionListener(this);
    		saveasItem.addActionListener(this);
    		closeItem.addActionListener(this);
    		area.setEditable(true);//使文本域可编辑
    		frame.add(scroll);
    		frame.setJMenuBar(bar);
    		frame.setVisible(true);
    		frame.setSize(400, 300);
    	}
    
    	@Override
    	public void actionPerformed(ActionEvent event) {
    		Object obj = event.getSource();
    		if(obj instanceof JMenuItem) {
    			JMenuItem item = (JMenuItem) obj;
    		    if(item == newItem) {
    		    	new BookDemo();
    		    }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(file == null){
                    	savedia = new FileDialog(frame,"保存",FileDialog.SAVE);
    		    		savedia.setVisible(true);
    		    		String diaPath = savedia.getDirectory();
    		    		String fileName = savedia.getFile();
    		    		if(diaPath == null ||fileName == null) {
    		    			file = new File(diaPath,fileName);
    		    		}
                    }
    		    	
    		    }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 TextPad{
    	public static void main(String args[]) {
    		new BookDemo();
    	}
    }
    
    

    运行截图




    简单笔记本老师很久之前就讲过了,在之前的博客里有详细总结。

    学习总结

    这周老师上课讲解了JDBC。

    何为JDBC?

    JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。 有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。 简单地说,JDBC 可做三件事:与数据库建立连接、发送 操作数据库的语句并处理结果。

    JDBC主要操作的类及接口

    JDBC如何连接数据库?

    JDBC是由Sun公司为简化Java程序访问数据库二指定的一套面向对象的应用程序接口。JDBC不能直接访问数据库,必须依赖于数据库厂商提供的JDBC驱动程序实现对底层数据库的操作。在数据库建立连接与访问时,一定记住先获得驱动器类库(jar包),并将其添加到项目中。

    第一步:导入jar驱动包

    1.鼠标放在工程目录下的src目录上,点击右键,选择Build Path
        2.在Build Path下选择configure Build Path...
        3.点击选择Libraries,并在右边选择Add External JARs...
        4.找到提前准备好的jdbc的jar包并点击打开
        5.点击OK

    第二步:动态加载驱动

    在main函数内输入 Class.forName("com.mysql.jdbc.Driver");
        有异常则抛出异常或者室友try/catch捕获异常

    第三步:创建数据库连接

    Connection conn = DriverManager.getConnection(url,user,password)

    url : 需要进行操作的数据库的详细路径,格式为:jdbc:mysql://127.0.0.1:3306/数据库名
        
        user : 数据库的用户名 ,一般为root;
        
        password : 数据库的连接密码

    第四步: 对数据库进行操作(分为 PreparedStatement 和 Statement)

    本周还没有对数据库进行练习,不清楚会遇到哪些错误。老师讲的很快,还没有弄明白,只是查阅了一些资料。

  • 相关阅读:
    华硕路由器5g/2.4g信道合并
    反冲(倒冲)
    成本中心与利润中心
    IFRS
    word首行大写关闭
    电子笔记还是手写笔记
    SAP程序跟踪
    Python银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机svm分析营销活动数据
    R语言结构方程模型SEM分析心理学和营销研究数据路径图可视化
    拓端tecdat|Python信贷风控模型:梯度提升Adaboost,XGBoost,SGD, GBOOST, SVC,随机森林, KNN预测金融信贷违约支付和模型优化
  • 原文地址:https://www.cnblogs.com/clayLJX/p/11957526.html
Copyright © 2020-2023  润新知