嗨,我有一个主菜单窗体,当您单击客户时打开一个新的CustomerRegistration窗体。客户详细信息已填写,然后添加了Customer类型的人员。 (Person是一个抽象类)然后将其添加到arlCustomers Arraylist。这一切工作和列表的大小增加,但它是当我使用dispose()关闭该窗体并返回到问题出现的主菜单,因为当我点击客户按钮时,arlCustomers列表大小又回到了0,我不知道为什么。我只能认为每次打电话给客户注册表单时都会创建一个新列表,但我很难理解如何解决这个问题。Java netbeans ArrayList在我关闭表单后重置为0然后重新打开它
我已经尝试在本地声明列表,在新的CustomerRegistration窗口被调用之前设置列表的值并移动我声明customerList但仍然没有变化的地方。
MainMenu.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package gui;
import dataModel.Consignment;
import dataModel.Customer;
import dataModel.MobileWarehouse;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.DefaultListModel;
/**
*
* @author Rich
*/
public class MainMenu extends javax.swing.JFrame {
private ArrayList<Customer> currentCustomers = new ArrayList();
private Customer customer = new Customer();
/**
* Creates new form MainMenu
*/
public MainMenu() {
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
lblTitle = new javax.swing.JLabel();
btnConsignments = new javax.swing.JButton();
btnCustomers = new javax.swing.JButton();
btnStaff = new javax.swing.JButton();
btnReports = new javax.swing.JButton();
Admin = new javax.swing.JButton();
btnSettings = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Fast Courier Service");
lblTitle.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N
lblTitle.setText("Demo Couriers");
btnConsignments.setText("Consignments");
btnConsignments.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
btnConsignmentsMouseClicked(evt);
}
});
btnCustomers.setText("Customers");
btnCustomers.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
btnCustomersMouseClicked(evt);
}
});
btnStaff.setText("Staff");
btnReports.setText("Reports");
Admin.setText("Admin");
btnSettings.setText("Settings");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(btnConsignments, javax.swing.GroupLayout.PREFERRED_SIZE, 113, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(lblTitle)
.addGap(0, 0, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addGap(10, 10, 10)
.addComponent(btnCustomers, javax.swing.GroupLayout.PREFERRED_SIZE, 113, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(btnStaff, javax.swing.GroupLayout.DEFAULT_SIZE, 116, Short.MAX_VALUE))))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(64, 64, 64)
.addComponent(btnReports, javax.swing.GroupLayout.PREFERRED_SIZE, 114, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(38, 38, 38)
.addComponent(Admin, javax.swing.GroupLayout.PREFERRED_SIZE, 114, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGap(132, 132, 132)
.addComponent(btnSettings, javax.swing.GroupLayout.PREFERRED_SIZE, 114, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(lblTitle)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnConsignments, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnCustomers, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnStaff, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(28, 28, 28)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnReports, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(Admin, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(26, 26, 26)
.addComponent(btnSettings, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(94, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void btnConsignmentsMouseClicked(java.awt.event.MouseEvent evt) {
try {
new Consignments().setVisible(true);
} catch (ParseException ex) {
Logger.getLogger(MainMenu.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void btnCustomersMouseClicked(java.awt.event.MouseEvent evt) {
try {
**new CustomerRegistration().setVisible(true);**
} catch (ParseException ex) {
Logger.getLogger(MainMenu.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(MainMenu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(MainMenu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(MainMenu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(MainMenu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MainMenu().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton Admin;
private javax.swing.JButton btnConsignments;
private javax.swing.JButton btnCustomers;
private javax.swing.JButton btnReports;
private javax.swing.JButton btnSettings;
private javax.swing.JButton btnStaff;
private javax.swing.JLabel lblTitle;
// End of variables declaration
}
Person.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package dataModel;
import java.io.Serializable;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
*
* @author Rich
*/
public abstract class Person implements Serializable {
protected int ID = 0;
protected String name = "Unknown";
protected String email = "Unknown";
protected String addressLine1 = "Unkown";
protected String addressLine2 = "Unknown";
protected String addressLine3 = "Unknown";
protected String postCode = "Unknown";
protected double costPerKg = 0.00;
protected Role role;
ArrayList<Customer> arlCustomers = new ArrayList<Customer>();
public Person() {
}
public Person(String name)
{
this.name = name;
}
public Person(String name, Role role, String addressLine1, String addressLine2, String addressLine3,
String postCode)
{
this.name = name;
this.addressLine1 = addressLine1;
this.addressLine2 = addressLine2;
this.addressLine3 = addressLine3;
this.postCode = postCode;
//ID = generateID();
}
public Person(String name, String email, double costPerKg, String addressLine1, String addressLine2, String addressLine3,
String postCode)
{
this.name = name;
this.addressLine1 = addressLine1;
this.addressLine2 = addressLine2;
this.addressLine3 = addressLine3;
this.postCode = postCode;
this.costPerKg = costPerKg;
//ID = generateID();
}
public void createTestData() throws ParseException
{
//arlCustomers = new ArrayList();
// item = new Customer("Rich mann", "[email protected]", 5.00, "1", "fake street", "Wadebridge", "pl27 8DD");
// this.registerCustomer((Customer) item);
// item = new Customer("bob mann", "[email protected]", 5.00, "1", "fake street", "Wadebridge", "pl27 8DD");
// this.registerCustomer((Customer) item);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getCostPerKg() {
return costPerKg;
}
public void setCostPerKg(double cost) {
this.costPerKg = cost;
}
public int getID() {
return ID;
}
public int generateID() {
Random rand = new Random();
int lowerBound = 0;
int upperBound = 1000;
int result = rand.nextInt(upperBound);
return result;
}
public ArrayList<Customer> getcustomers() {
return arlCustomers;
}
public void setCustomers(ArrayList customers)
{
arlCustomers = customers;
}
public void registerCustomer(Customer customer) {
arlCustomers.add(customer);
}
}
这是太多的代码。你能发布一个[最小的,完整的,可验证的例子](http://stackoverflow.com/help/mcve)? – khelwood