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:添加新记录
- 在输入框中输入记录
- 点击添加按钮
- 表格中显示新记录
示例2:更新记录
- 选中表格中的记录
- 修改输入框中的文本
- 窗口失去焦点或点击更新按钮
- 表格中对应记录的文本被更新
总结
通过本文的学习,你应该了解如何使用Java Swing创建GUI界面,并在其中添加输入框、按钮和表格等组件。同时,你应该会使用SQLiteJDBC连接SQLite数据库,并实现数据的CRUD操作。最后,你应该会为Swing组件添加事件处理程序,以使得用户可以与数据进行交互。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实战之用Swing实现通讯录管理系统 - Python技术站