Java实战之用Swing实现通讯录管理系统

yizhihongxing

Java实战之用Swing实现通讯录管理系统

介绍

本文将讲解如何用Java Swing实现一个简单通讯录管理系统。Swing是Java提供的GUI工具包,它允许我们方便地创建窗口和组件,并为它们添加事件。本文将提供完整的攻略,包含创建GUI界面、使用SQLite作为数据库、添加事件处理程序、实现数据的CRUD操作等内容。

前置知识

在学习本文之前,你需要对Java语言和面向对象编程有一定的了解。同时,你需要知道如何创建GUI、添加事件处理程序、连接SQLite数据库等知识。

整体架构

  • 创建GUI界面
  • 连接SQLite数据库
  • 实现数据的CRUD操作
  • 添加事件处理程序

创建GUI界面

我们将使用Swing组件库创建GUI界面。包括创建窗口、文本框、按钮和表格等。

创建窗口和主要面板

// 创建窗口
JFrame frame = new JFrame("通讯录管理系统");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 600);

// 创建主要面板
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

// 添加主要面板到窗口
frame.add(panel);

添加输入框和按钮

// 创建输入框和按钮
JTextField nameField = new JTextField(20);
JButton addButton = new JButton("添加");

// 创建一个面板,包含输入框和按钮
JPanel addPanel = new JPanel();
addPanel.add(new JLabel("姓名:"));
addPanel.add(nameField);
addPanel.add(addButton);

// 将添加面板添加到主要面板
panel.add(addPanel);

添加表格

// 创建表格
String[] columns = {"ID", "姓名"};
DefaultTableModel model = new DefaultTableModel(columns, 0);
JTable table = new JTable(model);

// 添加表格到主要面板
panel.add(new JScrollPane(table));

连接SQLite数据库

我们将使用SQLite作为我们的数据库。SQLite是一个轻量级的关系型数据库,其文件格式为扩展名为.db的文件。Java中有多个SQLite驱动程序可供使用,我们在本文中将使用SQLiteJDBC。

// 加载SQLite JDBC驱动程序
Class.forName("org.sqlite.JDBC");

// 连接到数据库
String url = "jdbc:sqlite:address_book.db";
Connection conn = DriverManager.getConnection(url);

实现数据的CRUD操作

我们需要实现以下操作:

  • 创建表格
  • 插入记录
  • 查询全部记录
  • 更新记录
  • 删除记录

创建表格

// 创建表格的SQL语句
String sql = "CREATE TABLE IF NOT EXISTS address_book (\n"
             + "id INTEGER PRIMARY KEY AUTOINCREMENT,\n"
             + "name TEXT NOT NULL\n"
             + ");";

// 创建Statement执行SQL语句
Statement stmt = conn.createStatement();
stmt.execute(sql);

插入记录

// 插入记录的SQL语句
String sql = "INSERT INTO address_book (name) VALUES (?)";

// 创建PreparedStatement执行SQL语句
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, nameField.getText());
pstmt.executeUpdate();

查询全部记录

// 查询所有记录的SQL语句
String sql = "SELECT * FROM address_book";

// 创建Statement并执行SQL语句
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);

// 清空表格数据
model.setRowCount(0);

// 遍历结果集并添加到表格中
while (rs.next()) {
    Object[] row = { rs.getInt("id"), rs.getString("name") };
    model.addRow(row);
}

更新记录

// 更新记录的SQL语句
String sql = "UPDATE address_book SET name = ? WHERE id = ?";

// 创建PreparedStatement执行SQL语句
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, newName);
pstmt.setInt(2, id);
pstmt.executeUpdate();

删除记录

// 删除记录的SQL语句
String sql = "DELETE FROM address_book WHERE id = ?";

// 创建PreparedStatement执行SQL语句
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, id);
pstmt.executeUpdate();

添加事件处理程序

我们需要为添加按钮、表格和窗口添加事件处理程序,以使得用户可以与数据进行交互。

添加按钮事件处理程序

addButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        // 插入记录
        // 查询全部记录
    }
});

添加表格事件处理程序

table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
    public void valueChanged(ListSelectionEvent e) {
        // 获取选中的行
        // 根据ID查询记录
        // 在输入框中显示记录
    }
});

添加窗口事件处理程序

frame.addWindowFocusListener(new WindowFocusListener() {
    public void windowGainedFocus(WindowEvent e) {
        // 查询全部记录
    }

    public void windowLostFocus(WindowEvent e) {
        // do nothing
    }
});

示例说明

示例1:添加新记录

  1. 在输入框中输入记录
  2. 点击添加按钮
  3. 表格中显示新记录

示例2:更新记录

  1. 选中表格中的记录
  2. 修改输入框中的文本
  3. 窗口失去焦点或点击更新按钮
  4. 表格中对应记录的文本被更新

总结

通过本文的学习,你应该了解如何使用Java Swing创建GUI界面,并在其中添加输入框、按钮和表格等组件。同时,你应该会使用SQLiteJDBC连接SQLite数据库,并实现数据的CRUD操作。最后,你应该会为Swing组件添加事件处理程序,以使得用户可以与数据进行交互。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实战之用Swing实现通讯录管理系统 - Python技术站

(0)
上一篇 2023年5月24日
下一篇 2023年5月24日

相关文章

  • SpringBoot Security安装配置及Thymeleaf整合

    下面我将为你详细讲解“SpringBoot Security安装配置及Thymeleaf整合”的完整攻略。 安装 首先需要在pom.xml中添加依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot…

    Java 2023年5月20日
    00
  • Java 跳出递归循环问题解决办法

    Java 跳出递归循环问题通常出现在递归函数内部的某一个条件不满足时,需要跳出递归循环。 常见的解决办法有以下几种: 使用非递归实现 将递归函数转换成非递归的形式,使用栈或队列进行迭代实现。这样的好处是可以在循环中使用break或return语句来跳出循环。 示例1:阶乘的非递归实现 public static long factorial(int n) {…

    Java 2023年5月25日
    00
  • Java中线程用法总结

    下面是Java中线程用法总结的完整攻略。 线程的基本概念 线程是指在单个程序中同时执行多个任务。可以将其想象成许多互相独立运行的小程序,这些程序可以在同一时间运行。在Java中,线程是由Thread类创建的对象表示的。使用线程的主要原因是可以更好地利用现代计算机CPU的多个核心,提高程序的效率。 线程的创建 创建线程的方式主要有两种: 继承Thread类 实…

    Java 2023年5月26日
    00
  • java如何导出insert语句并生成sql脚本

    要导出insert语句并生成sql脚本,我们可以使用Java中的JDBC(Java Database Connectivity)连接数据库并操作数据库。下面是详细的步骤: 加载数据库驱动。 首先需要加载对应的数据库驱动,这里以MySQL数据库为例,使用JDBC驱动名为com.mysql.jdbc.Driver。 Class.forName("com…

    Java 2023年5月20日
    00
  • Struts2开发环境搭建 附简单登录功能实例

    Struts2开发环境搭建 附简单登录功能实例 开发环境要求 首先,我们需要准备好以下开发环境:- Java JDK 1.7或者更高版本- Apache Tomcat 7或者更高版本- Eclipse IDE 或者其他Java集成开发环境 下载安装Tomcat 下载Tomcat 在Apache Tomcat的官网上,我们可以选择合适的版本进行下载和安装。一般…

    Java 2023年5月20日
    00
  • Java 判断字符为中文实例代码(超管用)

    标题:Java 判断字符为中文实例代码(超管用)攻略 介绍:在Java开发中,有时候需要判断字符是不是中文,本文将详细讲解Java判断字符为中文的实例代码,希望对大家有所帮助。 使用正则表达式判断字符是否为汉字 在Java中,我们可以使用正则表达式来判断字符是否为汉字。我们可以通过Unicode编码范围来表示中文字符,具体方法如下: public stati…

    Java 2023年5月29日
    00
  • Spring Boot 直接用jar运行项目的方法

    Spring Boot应用程序可以打包成可执行的jar文件,方便部署和运行。本文将详细讲解如何使用jar文件运行Spring Boot应用程序,包括如何打包jar文件、如何运行jar文件等。 打包jar文件 在使用jar文件运行Spring Boot应用程序之前,需要先打包jar文件。可以使用Maven或Gradle等构建工具打包jar文件。以下是一个使用M…

    Java 2023年5月15日
    00
  • Java异常类型及处理详情

    下面我将为你介绍“Java异常类型及处理详情”的完整攻略。 异常类型 Java中的异常分为两种类型:受检异常(Checked Exception)和非受检异常(Unchecked Exception)。 受检异常 受检异常是指在程序编译或运行时需要处理的异常,这种异常一般是由程序外部因素引起的,比如文件不存在、网络连接中断等等。在Java中,受检异常都是直接…

    Java 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部