2016-07-26 39 views
0

嗨,我有一个主菜单窗体,当您单击客户时打开一个新的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); 

    } 

} 
+1

这是太多的代码。你能发布一个[最小的,完整的,可验证的例子](http://stackoverflow.com/help/mcve)? – khelwood

回答

0

创建乌尔ArrayList和方法的类添加或删除等,并在你的ArrayList和方法添加静态和u不需要实例类..和你可以从任何类访问相同的列表。

static ArrayList<Customer> arlCustomers = new ArrayList<Customer>(); 
+0

您应该添加您的建议修复程序的实际说明。 – carlspring

相关问题