📅  最后修改于: 2023-12-03 15:32:03.567000             🧑  作者: Mango
这是一个使用Java Swing开发的简单的用户登记表应用程序。它可以让用户输入自己的个人信息并保存到本地文件中。
首先,在我们的应用程序中,我们需要定义一个用户类来存储用户的个人信息。这里我们可以定义一个名为“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组件:
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创建简单的用户登记表应用程序的介绍。该应用程序具有一些基本的功能,例如保存和加载用户信息,以及查看已经保存的所有用户信息。为了使应用程序更实用,我们可以添加一些其他功能,例如编辑和删除现有用户等。