Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用ActionListener检查并添加到arrayList的实例_Java_Exception_Arraylist_Event Handling_Actionlistener - Fatal编程技术网

Java 如何使用ActionListener检查并添加到arrayList的实例

Java 如何使用ActionListener检查并添加到arrayList的实例,java,exception,arraylist,event-handling,actionlistener,Java,Exception,Arraylist,Event Handling,Actionlistener,我创建了一个GUI,它接受以下字段(名称、街道、城市、州、邮政编码、帐号)。此外,您还可以从面板中选择3种客户类型,最后从下拉式课程组合框中选择课程 当用户输入上述信息并单击“提交”时,如果客户不存在,程序将创建客户并将其放入客户列表中,在课程列表中查找所选课程,并通过确认弹出对话框询问用户是否希望注册该课程。如果用户选择“是”,则课程将添加到该客户的课程列表中,字段将被清除,光标将放置在“名称”字段中,并且可以进行其他输入。如果客户已经退出,则不会创建新客户,但课程将添加到该客户的课程列表中。

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

当用户输入上述信息并单击“提交”时,如果客户不存在,程序将创建客户并将其放入客户列表中,在课程列表中查找所选课程,并通过确认弹出对话框询问用户是否希望注册该课程。如果用户选择“是”,则课程将添加到该客户的课程列表中,字段将被清除,光标将放置在“名称”字段中,并且可以进行其他输入。如果客户已经退出,则不会创建新客户,但课程将添加到该客户的课程列表中。 当用户单击“完成”时,程序写入每个客户及其课程列表的提示,显示发票对话框,然后退出。 使用匿名ActionListener。我需要为
clearFields
addCourse
提供一个方法,该方法接受客户名称和课程标题,
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中的编码<代码>添加操作侦听器。如何检查客户是否已经存在,如果不存在,则将其添加到
客户列表

假设已经创建了所有其他类和ARRAYLIST。

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

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

根据这一点,重写Customer类中的方法
Object.equals()
Object.hashCode()
。确保阅读这些方法的javadoc以理解它们的契约

最后,在action listener中,在将客户添加到列表之前,测试列表中是否还没有客户(使用
contains()
方法)