JAVA窗口应用程序编程
题干
请编写一个窗体应用程序,要求如下:
- 至少包括三个窗体,可以实现窗体间的跳转;
- 窗体内出现多种控件,比如标签、文本框、单选按钮、按钮等,实现事件处理;
- 程序中涉及到数据库操作,包括数据的增、删、改、查,数据库可以使用Sqlserver、Mysgl等
代码
// 导入相关的类库
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
// 定义一个主类,继承自JFrame
public class WindowApp extends JFrame {
// 定义一些组件和变量
private JPanel panel1, panel2, panel3; // 三个窗体
private JLabel label1, label2, label3; // 标签
private JTextField textField1, textField2, textField3; // 文本框
private JRadioButton radioButton1, radioButton2, radioButton3; // 单选按钮
private JButton button1, button2, button3; // 按钮
private ButtonGroup group; // 按钮组
private Connection conn; // 数据库连接
private Statement stmt; // 数据库语句
private ResultSet rs; // 数据库结果集
// 定义一个构造方法,设置窗体的属性和布局
public WindowApp() {
// 设置窗体的标题、大小、位置和关闭方式
setTitle("Java窗体应用程序");
setSize(400, 300);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 初始化数据库连接
initDB();
// 初始化组件
initComponent();
// 初始化窗体
initPanel();
// 添加窗体到窗体容器中
getContentPane().add(panel1);
getContentPane().add(panel2);
getContentPane().add(panel3);
// 设置第一个窗体可见,其他窗体不可见
panel1.setVisible(true);
panel2.setVisible(false);
panel3.setVisible(false);
// 设置窗体可见
setVisible(true);
}
// 初始化数据库连接的方法
public void initDB() {
try {
// 加载数据库驱动,这里以MySQL为例
Class.forName("com.mysql.jdbc.Driver");
// 获取数据库连接,需要指定数据库的URL、用户名和密码
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
// 创建数据库语句对象
stmt = conn.createStatement();
} catch (Exception e) {
// 处理异常
e.printStackTrace();
}
}
// 初始化组件的方法
public void initComponent() {
// 创建标签,并设置文本
label1 = new JLabel("请输入姓名:");
label2 = new JLabel("请选择性别:");
label3 = new JLabel("请输入年龄:");
// 创建文本框,并设置初始文本为空
textField1 = new JTextField("");
textField2 = new JTextField("");
textField3 = new JTextField("");
// 创建单选按钮,并设置文本
radioButton1 = new JRadioButton("男");
radioButton2 = new JRadioButton("女");
radioButton3 = new JRadioButton("其他");
// 创建按钮组,并将单选按钮添加到按钮组中
group = new ButtonGroup();
group.add(radioButton1);
group.add(radioButton2);
group.add(radioButton3);
// 创建按钮,并设置文本
button1 = new JButton("下一步");
button2 = new JButton("上一步");
button3 = new JButton("提交");
// 为按钮添加事件监听器,实现窗体间的跳转和数据库操作
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 切换到第二个窗体
panel1.setVisible(false);
panel2.setVisible(true);
panel3.setVisible(false);
}
});
button2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 切换到第一个窗体
panel1.setVisible(true);
panel2.setVisible(false);
panel3.setVisible(false);
}
});
button3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 获取用户输入的信息
String name = textField1.getText();
String gender = "";
if (radioButton1.isSelected()) {
gender = "男";
} else if (radioButton2.isSelected()) {
gender = "女";
} else if (radioButton3.isSelected()) {
gender = "其他";
}
String age = textField3.getText();
// 拼接SQL语句,实现数据的插入
String sql = "insert into user (name, gender, age) values ('" + name + "', '" + gender + "', '" + age + "')";
try {
// 执行SQL语句,并获取影响的行数
int rows = stmt.executeUpdate(sql);
// 判断是否插入成功
if (rows > 0) {
// 弹出提示框,显示成功信息
JOptionPane.showMessageDialog(null, "提交成功!");
} else {
// 弹出提示框,显示失败信息
JOptionPane.showMessageDialog(null, "提交失败!");
}
} catch (Exception ex) {
// 处理异常
ex.printStackTrace();
}
}
});
}
// 初始化窗体的方法
public void initPanel() {
// 创建窗体,并设置布局为流式布局
panel1 = new JPanel(new FlowLayout());
panel2 = new JPanel(new FlowLayout());
panel3 = new JPanel(new FlowLayout());
// 将组件添加到对应的窗体中
panel1.add(label1);
panel1.add(textField1);
panel1.add(button1);
panel2.add(label2);
panel2.add(radioButton1);
panel2.add(radioButton2);
panel2.add(radioButton3);
panel2.add(button2);
panel3.add(label3);
panel3.add(textField3);
panel3.add(button3);
}
// 主方法,用于启动程序
public static void main(String[] args) {
// 创建窗体对象
WindowApp app = new WindowApp();
}
}
还可以参看以下内容修改
(1) Java GUI 桌面应用开发 - 知乎.https://zhuanlan.zhihu.com/p/465066522
(2) java swing开发窗体程序开发(一)GUI编程 - 优快云博客. https://blog.youkuaiyun.com/tanyu159/article/details/89047942.
(3) Java AWT Swing(图形界面编程)全套教程,基础入门进阶 … https://www.bilibili.com/video/BV1wh411d7it/.
(4) Java Swing入门课程_图形界面GUI编程_100集视频教程_哔哩 … https://www.bilibili.com/video/BV1h7411v7Mq/.