使用数据库存储的java记事本

前文中写了一个实现本地文件读写功能的记事本,为了学习数据库的基本操作原理,将原来的记事本改写一下,新增通过数据库读写的功能。

数据表格

database:Test
table: test_file

字段名 数据类型
file_name varchar(32)
file_content varchar(2048)
file_date date

结构设计

使用建造者模式(Builder Pattern)来进行功能划分
StartUp.java 程序的入口
MainUI.java 界面UI
DbFileChooser.java 自己写的一个 数据库文件的选择窗体
DbFileChooseListener.java 用于传输子窗口与父窗口的信息
PageInfo.java 使用pageInfo的类来实现数据库的分页查询的内容存储
MySqlFileSever.java 数据库文件读写的服务端,进行数据库操作方法封装
MySqlFileClient.java 数据库文件读写的客户端,完成底层数据交互

代码实现

StartUp.java

package com.ui.startup;

import com.ui.component.MainUI;
import com.ui.property.ConfigProperty;

public class StartUp {
   

	public static void main(String[] args) {
   
		ConfigProperty cp = new ConfigProperty();
		
		MainUI ui = new MainUI();
		ui.init();
		System.out.println("startup end");
		
	}
}

MainUI.java

package com.ui.component;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import java.util.Map;
import java.util.Optional;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.lang3.StringUtils;

import com.ui.listener.DbFileChooseListener;
import com.ui.property.ConfigProperty;
import com.ui.service.FileService;
import com.ui.service.local.LocalFileService;
import com.ui.service.mysql.MysqlFileService;

public class MainUI extends JFrame {
   


	private static final long serialVersionUID = 1L;
	private DbFileChoosePanel dbFileChoosePanel = null;
	private LocalFileChoosePanel localFileChoosePanel = null;
//	private ConfigProperty cp = null;
	private MysqlFileService mysqlfileService = null;
	private LocalFileService localFileService = null;
	private List<Map<String,Object>> mList = null; // 存储查询的所有记录
	
	private String name = null;
	private JTextArea jTextArea = null;
	private JScrollPane jScrollPane = null;
	
	
	public MainUI() {
   
		
		this.mysqlfileService = new MysqlFileService();
		this.dbFileChoosePanel = new DbFileChoosePanel();
	}
	
	public void init() {
   
		
		setSize(800, 600);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(3);
        setTitle("新建文件夹.txt - 记事本");
        add_Menu();
        jTextArea = new JTextArea();
        jScrollPane = new JScrollPane(jTextArea);
        jScrollPane.setPreferredSize(new Dimension(780, 550));
        this.add(jScrollPane, "Center");
        this.setVisible(true);

	}
	
	 private void add_Menu() {
   
		 
	        JMenuBar jMenuBar = new JMenuBar();
	        this.setJMenuBar(jMenuBar);
	        JMenu jm_file = new JMenu("文件");
	        JMenu jm_db = new JMenu("数据库");
	        jMenuBar.add(jm_file);
	        jMenuBar.add(jm_db);
	        JMenuItem item1 = new JMenuItem("打开");
	        JMenuItem item2 = new JMenuItem("保存");
	        jm_file.add(item1);
	        jm_file.add(item2);
	        item1.addActionListener(new ActionListener() {
   
				@Override
				public void actionPerformed(ActionEvent arg0) {
   
					// TODO Auto-generated method stub
					openFileUi();
				}
	        });
	        item2.addActionListener(new ActionListener() {
   
	        	@Override
	        	public void actionPerformed(ActionEvent e) {
   
	                saveFileUi();
	            }
	        });
	
	        JMenuItem item3 = new JMenuItem("打开");
	        JMenuItem item4 = new JMenuItem("保存");
	        JMenuItem item5 = new JMenuItem("新建");
	        jm_db.add(item3);
	        jm_db.add(item4);
	        jm_db.add(item5);
	        item3.addActionListener(new ActionListener() {
   
	            @Override
	        	public void actionPerformed(ActionEvent e) {
   
	                openDbUi();
	            }
	        });
	        item4.addActionListener(new ActionListener() {
   
	        	@Override
	        	public void actionPerformed(ActionEvent e) {
   
	                saveDbUi();
	            }
	        });
	        item5.addActionListener(new ActionListener() {
   
	        	@Override
	        	public void actionPerformed(ActionEvent e) {
   
	                newDbUi();
	            }
	        });
	 
	 }
	
	private void newDbUi() {
   
		// TODO Auto-generated method stub
		this.name = null;
		setTitle("新建文件夹");
		this.jTextArea.setText("");
	}

	private void openDbUi() {
   
		// TODO Auto-generated method stub
		String content = jTextArea.getText();
		int sel;
		if(name == null) {
    // 第一次打开
			if(StringUtils.isNotBlank(content) ) {
     // 且进行了输入
				sel = showSaveDialog();
				if(sel == JOptionPane.YES_OPTION) {
     // 选择保存
					String[] jlist = {
   "请输入新建文件名:"};
					this.dbFileChoosePanel.setJlist(jlist);
					//this.dbFileChoosePanel.init();
					this.dbFileChoosePanel.setVisible(true);

					this.dbFileChoosePanel.setDbFileChooseListener(new DbFileChooseListener() {
   	
						@Override
						public void onEvent(String selected, String input) {
   
							if(input!=null) {
     // 输入了文件名称
								name = input;
								mysqlfileService.save(name, content);
								setTitle(name + " - 记事本");  // 保存文件 需重新点击打开
							} // 选择取消 则返回
							

							dbFileChoosePanel.setVisible(false);
						}
					});
				} // 选择不保存 则直接打开
			} // 是第一次打开 且未进行输入 
		} else if (!isSaved()) {
     // 已打开文件 且修改未保存
			sel = showSaveDialog();
			if(sel 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值