标题ava Swing实现简单的记事本
声明:(本代码直接复制肯定运行不了,因为里面一些数据库的东西不一样)
一:简单介绍
一个简单的记事本,要实现添加和查询的功能。(添加到数据库中,并且从数据库中查询)。
本代码是把数据存到数据库中,需要有一点点数据库(增,查)的知识,还需要会一些JDBC(就是java连接数据库)的知识。不会的可以先去学习一下JDBC,内容不是很多。
- 添加 :添加文字,添加图片
- 查找 :用添加的日期,查找对应的内容,并且把图片也显示出来
二:代码
import java.sql.*;
import java.util.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
public class ConnectionTest02 extends JFrame{
public static void main(String[] args){
new ConnectionTest02().init();
}
JFrame f = new JFrame("记事本");
JFrame f_1 = new JFrame("查询");
JLabel label01 = new JLabel("日期: ");
JLabel label02 = new JLabel("内容: ");
JLabel label03 = new JLabel("图片路径: ");
JLabel label04 = new JLabel("请输入要查询的time:");
JLabel label05 = new JLabel();
JLabel label06 = new JLabel("查询内容: ");
JTextField textfield = new JTextField(25);
JTextArea textArea = new JTextArea(10, 30);
JTextArea textArea02 = new JTextArea(10, 30);
JTextField textfield02 = new JTextField(20);
JTextField textfield03 = new JTextField(20);
JButton button01 = new JButton("确定保存");
JButton button02 = new JButton("清空");
JButton button03 = new JButton("查询");
JButton button04 = new JButton("查询");
public void init(){
JPanel p = new JPanel();
p.add(label01);
p.add(textfield);
JPanel p02 =new JPanel();
p02.add(label02);
p.add(button01);
p02.add(textArea);
JPanel p03 =new JPanel();
p03.add(label03);
p03.add(textfield02);
JPanel p04 =new JPanel();
p03.add(button02);
p03.add(button03);
// 这里使用的是Box垂直组件
Box vertical = Box.createVerticalBox();
vertical.add(p);
vertical.add(p02);
vertical.add(p03);
vertical.add(p04);
f.add(vertical);
f.pack();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 这是JFrame中window包中的方法,目的是使得页面显示在中间位置
f.setLocationRelativeTo(null);
// 按钮-保存-处理
button01.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent e)
{
testConnextion3();
clear();
}
});
// 按钮-清空-处理
button02.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent e)
{
clear();
}
});
// 按钮-查询-处理
// 进行查询的时候将会产生一个新的页面
button03.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent e)
{
init2();
}
});
// 设置宽高
f.setSize(500,500);
f.setVisible(true);
}
public void init2(){
JPanel p05 =new JPanel();
p05.add(label04);
p05.add(textfield03);
p05.add(button04);
p05.add(label05);
JPanel p06 = new JPanel();
p06.add(label06);
p06.add(textArea02);
// // 这里使用的是Box垂直组件
Box vertical02 = Box.createVerticalBox();
vertical02.add(p05);
vertical02.add(p06);
f_1.add(vertical02);
f_1.pack();
f_1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 这是JFrame中window包中的方法,目的是使得页面显示在中间位置
f_1.setLocationRelativeTo(null);
// 按钮查询处理
button04.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent e)
{
look();
}
});
// 设置宽高
f_1.setSize(500,500);
f_1.setVisible(true);
}
// 最终版--连接(将连接需要的信息保存在配置文件中)
public void testConnextion3(){
Connection conn = null;
PreparedStatement ps = null;
String str01 = textfield.getText();
String str02 = textArea.getText();
String str03 = textfield02.getText();
try{
// 使用资源绑定器绑定属性配置文件
ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
String driver = bundle.getString("driver");
String url = bundle.getString("url");
String user = bundle.getString("user");
String password = bundle.getString("password");
// 1、注册驱动
Class.forName(driver);
// 2、获取连接
conn = DriverManager.getConnection(url,user,password);
System.out.println("数据库连接对象 =" + conn);
// 这里的图片路径我只是把图片和java文件放在了同一个文件夹下。所以保存的时候我只保存的是图片的文件名
String sql = "insert into riji(id,text,bir,url)values(?,?,?,?)";
ps = conn.prepareStatement(sql); // 用于将参数化的SQL语句发送到数据库。
// 填充占位符
ps.setString(1,str01);
ps.setString(2,str02);
ps.setString(3,"2021-6-8");
ps.setString(4,str03);
// 执行
ps.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}finally{
// 资源关闭
try{
if(ps != null)
ps.close();
}catch(SQLException e){
e.printStackTrace();
}
try{
if(conn!=null)
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
// 按钮清空方法
public void clear(){
textfield.setText("");
textArea.setText("");
textfield02.setText("");
}
// 查找功能的实现
public void look(){
String str04 = textfield03.getText();
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try{
// 使用资源绑定器绑定属性配置文件
ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
String driver = bundle.getString("driver");
String url = bundle.getString("url");
String user = bundle.getString("user");
String password = bundle.getString("password");
// 1、注册驱动
Class.forName(driver);
// 2、获取连接
conn = DriverManager.getConnection(url,user,password);
System.out.println("数据库连接对象 =" + conn);
// 预编译sql语句
String sql = "select id,text,bir,url from riji where id = ?";
ps = conn.prepareStatement(sql); // 用于将参数化的SQL语句发送到数据库。
ps.setString(1,str04);
rs = ps.executeQuery();
if(rs.next()){
String id =rs.getString(1);
String text = rs.getString(2);
String bir = rs.getString(3);
String url01 = rs.getString(4);
System.out.println(id +" , " + text+" , " + bir + "图片路径:"+url01);
textArea02.append(text); // 查询的时候把文字显示出来
label05.setPreferredSize(new Dimension(100,100)); // 设置label的大小,就是可以固定图片输出的大小
label05.setIcon(new ImageIcon(url01)); // 把对应的图片显示出来
}
ps.execute();
}catch (Exception e){
e.printStackTrace();
}finally{
// 资源关闭
try{
if(ps != null)
ps.close();
}catch(SQLException e){
e.printStackTrace();
}
try{
if(conn!=null)
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
try{
if(rs!=null)
rs.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
因为我这里使用的是------资源绑定器绑定属性配置文件,所以还需要有一个后缀为.properties的文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/users-long
user=root
password=这里要填写你自己设置的数据库密码
三:效果展示
这里查找的时候,输入查找的日期。然后会出现当天的内容,和当时添加的图片
我的数据库表查看到的结果是这样的:
四:小结
这个代码也是之前写的了,里面有很多内容也是看视频,然后拼拼凑凑,慢慢凑出来的。里面主要的内容就是JDBC,连接数据库了吧。然后完成其中的一些添加功能(里面用到了数据库的添加),还有一个就是查找功能(同样是数据库)。当时还有一个搞了挺久的,就是那个把图片显示出来。
使用的是:
label05.setIcon(new ImageIcon(url01)); // 把对应的图片显示出来
感兴趣的可以自己去查查 。