如何使用ActionListener检查arrayList的实例并将其添加到其中



我创建了一个GUI,它接受以下字段(名称、街道、城市、州、邮政编码、帐号)。此外,您可以从面板中选择3种客户类型,最后从下拉式课程组合框中选择一门课程。

当用户输入上述信息并单击"提交"时,如果客户不存在,程序将创建客户并将其放在客户列表中,在课程列表中找到所选课程,并通过弹出的确认对话框询问用户是否希望注册该课程。如果用户选择"是",则课程将添加到该客户的课程列表中,字段将被清除,光标将放置在名称字段中,并且可以进行另一项输入。如果客户已经退出,则不会创建新客户,而是将课程添加到该客户的课程列表中。当用户单击"完成"时,程序会写入每个客户及其课程列表的提示,显示发票对话框,然后退出。使用匿名actionListener。我需要有一个clearFieldsaddCourse的方法,它接受客户名称和课程标题,addCustomer使用字段中的数据创建客户并将其添加到客户列表,readCourses读取courses.txt,创建课程并将它们添加到课程列表,并填充用于下拉框选择的字符串数组,以及generateInvoice。这是我所能做到的。

submitButton.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent ae)
        {
          if (confirm())
    {
                customerList.add(new Customer(nameField.getText(),new Address(streetField.getText(), cityField.getText(), stateField.getText(), Integer.parseInt(zipField.getText())), Integer.parseInt(accountNumberField.getText())));
            }
    clearFields();            
        }
    });
    finishButton.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent ae) 
        {
            for(Customer c: customerList)
                System.out.println(c.toString());
            System.exit(0);
        }
    });
    add(nameLabel);
    add(nameField);  
    add(streetLabel);
    add(streetField);
    add(cityLabel);
    add(cityField);  
    add(stateLabel);
    add(stateField);
    add(zipLabel);
    add(zipField); 
    add(accountNumberLabel);
    add(accountNumberField);
    add(customerLabel);
    add(myPanel);
    add(courseLabel);
    add(courseBox);
    add(submitLabel);
    add(submitButton);
    add(finishLabel);
    add(finishButton);
}   
public static void main(String args[])
{
    CourseGUI g = new CourseGUI();
    g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    g.setLocationRelativeTo(null);
    g.setSize(650,350);
    g.setVisible(true);
}   
public void clearFields()
{
    nameField.setText("");
    streetField.setText("");
    cityField.setText("");
    stateField.setText("");
    zipField.setText("");
    accountNumberField.setText("");
    myGroup.clearSelection();
courseBox.setSelectedIndex(0);
nameField.requestFocus();
}
public String getCourse()
{
   return courses[courseBox.getSelectedIndex()];        
}
public String getClassification()
{
if (studentButton.isSelected())
return studentButton.getText();
else if (facultyButton.isSelected())
return facultyButton.getText();
else 
return governmentButton.getText();
}
public boolean confirm()
{
JFrame frame = new JFrame();
int result;
String message;
message = String.format("%s %s %s %s %s %d %d", nameField.getText(), streetField.getText(), cityField.getText(), stateField.getText(), zipField.getText(), accountNumberField.getText());
result = JOptionPane.showConfirmDialog(frame, message);
if (result == JOptionPane.YES_OPTION)
        return true;
return false;
}

我需要帮助的是submitButton中的编码。addActionListener。我该如何检查客户是否已经存在,如果不存在,则将其添加到customerList中。假设已经创建了所需的所有其他类和arrayList

当您认为用户输入的客户已经存在于列表中时,您必须首先从功能上做出决定。简而言之:是什么让一个客户与另一个客户平等。

如果他们有相同的名字,他们是平等的吗?或者如果他们有相同的名字和账号?还是相同的名字和地址?

根据情况,覆盖Customer类中的方法Object.equals()Object.hashCode()。请务必阅读这些方法的javadoc以了解它们的契约。

最后,在操作监听器中,在将Customer添加到列表之前,测试列表是否已经包含Customer(使用contains()方法)。

相关内容

  • 没有找到相关文章

最新更新