2015-04-23 2 views
0

Я потратил некоторое время на то, чтобы попробовать разные вещи, чтобы попытаться выполнить это задание на домашнюю работу, но я не могу понять это, и это самая последняя часть, которую я предполагаю, мне в лицо. Когда я ввожу имя и фамилию и нажимаю «Добавить учетную запись», а затем подтверждаю, что он должен добавить учетную запись в администратор, а затем, когда я нажимаю «Количество учетных записей», он должен показать мне, сколько учетных записей существует в целом, однако оно продолжает показывать 0 .Использование других значений классов из метода getter

enter image description here

BasicAccountList

import java.util.*; 


public class BasicAccountList 
{ 
    private ArrayList < BasicAccount> accounts; 

    /** 
    * Create a BasicAccount. 
    */ 
    public BasicAccountList() 
    { 
     accounts = new ArrayList < BasicAccount>(); 
    } 

    /** 
    * Add an account to this account list. 
    * @param account the accountobject to be added 
    */ 
    public void addAccount(BasicAccount account) 
    { 
     accounts.add(account); 
    } 

    /** 
    * Return the number of accounts currently held. 
    * 
    * @return the number of accounts 
    */ 
    public int getNumberOfAccounts() 
    { 
     return accounts.size(); 
    } 

} 

BasicAccount

public class BasicAccount 
{ 
    private Name name; 
    private String accountNumber; 

    /** 
    * Constructor for objects of class Account. 
    * The number of pointsHeld should should be set to 
    * the supplied value. 
    * 
    * @param fName The Account Holder's first name 
    * @param lName The Account Holder's last name 
    * @param acctNumber The account number 
    */ 
    public BasicAccount(String fName, String lName, String acctNumber) 
    { 

     name = new Name (fName, lName); 
     accountNumber = acctNumber; 
    } 

    // accessors 

    /** 
    * Get the Account Holder's first name 
    * 
    * @return the Account Holder's first name 
    */ 
    public String getFirstName() 
    { 
     return name.getFirst(); 
    } 

    /** 
    * Get the Account Holder's last name 
    * 
    * @return the Account Holder's last name 
    */ 
    public String getLastName() 
    { 
     return name.getLast(); 
    } 

    /** 
    * Get the Account Holder's account Number 
    * 
    * @return the Account Holder's account number 
    */ 
    public String getAccountNumber() 
    { 
     return accountNumber; 
    } 


    public void printAccountDetails() 
    { 
     System.out.println(toString()); 
    }  

    /** 
    * Return details of an account as a formated string 
    * 
    * @return the account details of a particular account 
    */ 

    public String toString()  
    { 
     String output = accountNumber + " "; 
     output = output + name.toString() + "\n";  
     return output; 
    } 

    // mutators   
    /** 
    * Change the first name 
    * 
    * @param fName the new first name 
    * 
    */ 
    public void setFirstName(String fName) 
    { 
     name.setFirst (fName); 
    } 

    /** 
    * Change the last name 
    * 
    * @param lName the new last name 
    * 
    */ 
    public void setLastName(String lName) 
    { 
     name.setLast(lName); 
    } 


} // end Account class 

Соответствующий код в GUI класса

/** 
* Write a description of class HW4GUI here. 
* 
* @author (your name) 
* @version (a version number or a date) 
*/ 

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

public class HW4GUI extends JFrame implements ActionListener   
{ 
    private BasicAccountList accounts; 
    private JPanel buttonPanel; 
    private JButton jbtAdd; 
    private JButton jbtNumber; 
    private JButton jbtQuit; 
    private JLabel jlbAcctNo; 
    private JLabel jlbFName; 
    private JLabel jlbLName; 
    private JTextField jtfAcctNo; 
    private JTextField jtfFName; 
    private JTextField jtfLName; 
    private int nextAcctNo; 
    private JPanel textPanel; 

    public HW4GUI() 
    { 
     makeFrame(); 
     showFrame(); 
     nextAcctNo = 1001; 


    } 
    public void actionPerformed(ActionEvent ae) 
    { 

     BasicAccountList accountlist = new BasicAccountList(); 
     String item = ae.getActionCommand(); 
     String firstNameText = jtfFName.getText(); 
     String lastNameText = jtfLName.getText(); 
     String finalAccountNumber = jtfAcctNo.getText(); 

     if(item.equals("No. of Accounts")) 
     { 
      jbtAdd.setEnabled(false); 
      jbtNumber.setText ("Clear"); 
      jlbAcctNo.setText("No. of accounts:"); 


      //accounts.getNumberOfAccounts(); 

      BasicAccount newaccount = new BasicAccount(firstNameText, lastNameText, finalAccountNumber); 

      String accountTotal = Integer.toString (accountlist.getNumberOfAccounts()); 

      jtfAcctNo.setText (accountTotal); 


     } 


    } 
+0

какая ур проблема? вы получаете какую-либо ошибку? –

+0

Нет ошибки, просто есть проблема с моими вызовами функций arraylist и class, которые я не могу найти, вместо того, чтобы возвращаться, 4, когда я добавляю 4 учетных записей, вместо этого возвращает 0. –

+0

Где класс имени? – MaxZoom

ответ

1

Вы создаете другой BasicAccountList внутри метода actionPerformed. Это означает, что каждый раз, когда вы нажимаете кнопку, вы создаете новый BasicAccountList и выполняете все операции в этом списке, а не тот, который удерживается HW4GUI.

+0

Я попытался удалить это и изменить эту строку кода String accountTotal = Integer.toString (accounts.getNumberOfAccounts()); , но теперь столкнуться с этой проблемой - http://i.imgur.com/izm6w12.png –

+0

учетные записи не инициализируются в конструкторе (по крайней мере, я так думаю). инициализировать его, и он должен работать. – Paul

+0

Я пробовал оба из них в конструкторе, но оба они не исправляют, если я не написал их неправильно? accounts = new BasicAccountList(); ...................... Учетные записи BasicAccountList = новый BasicAccountList(); –

0

Вместо реализации ActionListener в классе, реализующем JFrame, было бы лучше, если вы сделаете это в отдельном классе (возможно, в анонимном классе, но любой класс в порядке).

Теперь у вас могут быть два отдельных класса, реализующих ActionListener и, следовательно, две отдельные реализации actionPerformed, по одной для каждой кнопки.

Прикрепите эти ActionListener s к соответствующим кнопкам, и вы должны быть хорошими.

Примечание: список учетных записей должен быть членом кадра, поэтому вы можете делиться им как по ActionListener.

Удачи.

Смежные вопросы