繁体   English   中英

简单的员工记录 java 程序 GUI 删除按钮

[英]Simple employee records java program GUI remove button

我有一个程序 GUI,用户可以输入 ID#、名字、姓氏、薪水、开始日期。 用户将此信息输入到每个信息需要的文本区域后,用户单击将信息存储到 arrayList 的添加按钮。单击添加后,用户按下“列表”按钮 output 将所有输入到面板的信息.

存储用户数据的数组列表:

public class EmploymentRecords extends javax.swing.JFrame {

ArrayList <Data> Output = new ArrayList <Data>();

删除按钮代码:

private void btnRemoveActionPerformed(java.awt.event.ActionEvent evt) {                                          
    
    int index;
    String id = txtID.getText();
    boolean idCheck = Output.contains(id);

    if (idCheck = true){
        index = Output.indexOf(id);
        Output.remove(index);
        lblError.setText("Employee found and has been removed.");
    }
    else {
        lblError.setText("Employee not found. Please try again.");
    }

class 资料:

class Data {
    String id, firstName, lastName, salary, startDate;
    Data (String _id, String _firstName, String _lastName, String _salary, String _startDate) {
        id = _id;
        firstName = _firstName;
        lastName = _lastName;
        salary = _salary;
        startDate = _startDate;

这是我的问题:我希望用户能够在 GUI 的文本区域中输入一个 ID,程序会检查之前是否输入过该 ID,并仅使用该 ID 完全删除 output 屏幕和 arraylist 中的所有数据。 我在上面输入的代码对我不起作用,当我按下删除按钮时没有任何反应。

请帮忙,我将不胜感激...谢谢!

您缺少一些要共享的代码。 但是让我们假设您的“添加”功能正在运行。 我们还假设“String id = txtID.getText();” 将能够以字符串形式为您获取 id。 一个明显的错误是“if (idCheck = true)”,如在 java 中,您将其与“==”进行比较,因此也许您可以尝试以这种方式修复它并报告答案。

您所做的工作适用于 ArrayList 中的单个实体对象(例如ArrayList<String>ArrayList<Integer> ),但对于数据class 中的多实体对象则不太好。换句话说,每个ArrayList 中的元素包含 class 的实例以及与其相关的所有成员,而不仅仅是一个简单的字符串或 Integer。

您需要更深入一点 go 才能实际获取任何特定数据 object实例的ID ,以便与某人在 GUI 中提供的内容进行比较,例如:

private void btnRemoveActionPerformed(java.awt.event.ActionEvent evt) {                                          
    String id = txtID.getText();

    boolean found = false;

    for (Data data : Output) {
        if (data.id.equals(id) {
           found = true;
           Output.remove(data);
           clearFieldsInForm();
           break;
        }
    }
    if (found) {
        lblError.setText("Employee was successfully removed.");
    }
    else {
        lblError.setText("Invalid ID! Employee not found! Please try again.");
    }
}

你会注意到clearFieldsInForm(); 上面代码中使用的方法。 此方法只会将所有相关的表单字段设置为 Null String (""),这实际上什么都没有:

private void clearFieldsInForm() {
    txtID.setText("");
    txtFirstName.setText("");
    txtLastName.setText("");
    txtsalary.setText("");
    txtStartDate.setText("");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM