📜  Java摇摆 |简单的用户登记表(1)

📅  最后修改于: 2023-12-03 15:32:03.567000             🧑  作者: Mango

Java摇摆 | 简单的用户登记表

简介

这是一个使用Java Swing开发的简单的用户登记表应用程序。它可以让用户输入自己的个人信息并保存到本地文件中。

功能
  • 用户可以输入自己的姓名、性别、年龄、邮箱地址和手机号码。
  • 用户可以查看已经保存的所有用户信息。
  • 用户可以将当前用户信息保存到本地文件中。
  • 用户可以将所有用户信息从本地文件中读取出来并显示在程序中。
技术栈
  • Java Swing:用于构建GUI界面。
  • Java IO:用于读写本地文件。
加载数据

首先,在我们的应用程序中,我们需要定义一个用户类来存储用户的个人信息。这里我们可以定义一个名为“User”的类,它具有以下属性:

public class User {
    private String name;
    private String gender;
    private int age;
    private String email;
    private String phone;
    
    // getters and setters
}

然后,我们需要将所有用户信息存储在一个列表中。在这里,我们可以使用Java的ArrayList类来存储它。

List<User> userList = new ArrayList<>();

现在,我们需要从本地文件中读取用户信息。给定一个文件路径,我们可以使用Java IO中的FileReader和BufferedReader类来读取文件,并将每个用户信息插入到userList中。

File file = new File("userlist.txt");
if (file.exists()) {
    try (BufferedReader br = new BufferedReader(new FileReader(file))) {
        String line;
        while ((line = br.readLine()) != null) {
            String[] userInfo = line.split(",");
            User user = new User();
            user.setName(userInfo[0]);
            user.setGender(userInfo[1]);
            user.setAge(Integer.parseInt(userInfo[2]));
            user.setEmail(userInfo[3]);
            user.setPhone(userInfo[4]);
            userList.add(user);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
构建界面

在我们的应用程序中,我们需要构建一个GUI界面来显示用户信息并允许用户输入其个人信息。在这里,我们可以使用Java Swing来构建我们的GUI。我们可以开始创建一个窗体并添加所需的GUI组件,例如文本字段、标签和按钮等。

在这里我们使用GridLayout布局管理器,并定义了以下GUI组件:

  • 标签:Name, Gender, Age, Email, Phone
  • 文本字段:txtName, txtGender, txtAge, txtEmail, txtPhone
  • 按钮:btnSave, btnLoad, btnClear, btnExit
  • 表格:userTable
public class UserRegistrationForm extends JFrame {
    private JLabel lblName;
    private JLabel lblGender;
    private JLabel lblAge;
    private JLabel lblEmail;
    private JLabel lblPhone;
    
    private JTextField txtName;
    private JTextField txtGender;
    private JTextField txtAge;
    private JTextField txtEmail;
    private JTextField txtPhone;
    
    private JButton btnSave;
    private JButton btnLoad;
    private JButton btnClear;
    private JButton btnExit;
    
    private JTable userTable;
    private DefaultTableModel tableModel;
    
    public UserRegistrationForm() {
        //设置框架标题
        setTitle("User Registration Form");
        
        //定义GUI组件
        lblName = new JLabel("Name:");
        lblGender = new JLabel("Gender:");
        lblAge = new JLabel("Age:");
        lblEmail = new JLabel("Email:");
        lblPhone = new JLabel("Phone:");
        
        txtName = new JTextField(20);
        txtGender = new JTextField(20);
        txtAge = new JTextField(20);
        txtEmail = new JTextField(20);
        txtPhone = new JTextField(20);
        
        btnSave = new JButton("Save");
        btnLoad = new JButton("Load");
        btnClear = new JButton("Clear");
        btnExit = new JButton("Exit");
        
        tableModel = new DefaultTableModel();
        tableModel.addColumn("Name");
        tableModel.addColumn("Gender");
        tableModel.addColumn("Age");
        tableModel.addColumn("Email");
        tableModel.addColumn("Phone");
        userTable = new JTable(tableModel);
        
        //添加GUI组件到窗体
        JPanel panel = new JPanel(new GridLayout(7, 2));
        panel.add(lblName);
        panel.add(txtName);
        panel.add(lblGender);
        panel.add(txtGender);
        panel.add(lblAge);
        panel.add(txtAge);
        panel.add(lblEmail);
        panel.add(txtEmail);
        panel.add(lblPhone);
        panel.add(txtPhone);
        panel.add(btnSave);
        panel.add(btnLoad);
        panel.add(btnClear);
        panel.add(btnExit);
        
        add(panel, BorderLayout.NORTH);
        add(new JScrollPane(userTable), BorderLayout.CENTER);
        
        //添加按钮点击事件
        btnSave.addActionListener(this::onSave);
        btnLoad.addActionListener(this::onLoad);
        btnClear.addActionListener(this::onClear);
        btnExit.addActionListener(this::onExit);

        //设置窗体属性
        setSize(500, 500);
        setResizable(false);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }
    
    //按钮点击事件处理程序
    private void onSave(ActionEvent e) {
        //将当前用户信息保存到本地文件中和userList中
        String name = txtName.getText();
        String gender = txtGender.getText();
        int age = Integer.parseInt(txtAge.getText());
        String email = txtEmail.getText();
        String phone = txtPhone.getText();
        
        User user = new User();
        user.setName(name);
        user.setGender(gender);
        user.setAge(age);
        user.setEmail(email);
        user.setPhone(phone);
        userList.add(user);
        
        try (PrintWriter out = new PrintWriter(new FileWriter("userlist.txt", true))) {
            out.println(name + "," + gender + "," + age + "," + email + "," + phone);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        
        //清除所有文本字段
        clearFields();
        
        //重新加载用户列表
        loadUserList();
    }

    private void onLoad(ActionEvent e) {
        //从文件中读取所有用户信息并加载到userList和userTable中
        tableModel.setRowCount(0);
        userList.clear();
        loadUserList();
    }

    private void onClear(ActionEvent e) {
        //清除所有文本字段
        clearFields();
    }

    private void onExit(ActionEvent e) {
        //退出应用程序
        System.exit(0);
    }
    //其他实现方法省略
    
}
加载用户列表

现在,我们已经构建了GUI界面,并定义了一些按钮点击事件的处理程序,我们需要写一个方法来加载用户列表。该方法将读取userList列表中的所有用户信息并将其显示在userTable组件中。

private void loadUserList() {
    for (User user : userList) {
        Object[] data = new Object[5];
        data[0] = user.getName();
        data[1] = user.getGender();
        data[2] = user.getAge();
        data[3] = user.getEmail();
        data[4] = user.getPhone();
        tableModel.addRow(data);
    }
}
运行程序

最后,我们需要编写一个main方法来启动我们的应用程序。在main方法中,我们只需实例化UserRegistrationForm类即可。

public class App {
    public static void main(String[] args) {
        new UserRegistrationForm();
    }
}
结论

以上是我们如何使用Java Swing和Java IO创建简单的用户登记表应用程序的介绍。该应用程序具有一些基本的功能,例如保存和加载用户信息,以及查看已经保存的所有用户信息。为了使应用程序更实用,我们可以添加一些其他功能,例如编辑和删除现有用户等。