嗨,我有一個主菜單窗體,當您單擊客戶時打開一個新的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