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