Как передать метод из класса A в класс B - PullRequest
0 голосов
/ 12 августа 2010

Есть 3 файла:

1. Annuuity.java
2. AnnuityDueGUI.java  // GUI for Annuity Due
2. AnnuityDueResultGUI.java  //GUI for the result

Под AnnuityDueGUI.java:

public double calculateFADGUI(){
        //FVA = A{[(1+i)^n – 1] / i} (1+i)
        String amountStr = amount.getText() ;  //convert string to double
        dAmount = Double.parseDouble(amountStr) ;
        String iStr = iText.getText() ;
        dInterest = Double.parseDouble(iStr) ;
        String periodStr = period.getText() ;
        dPeriod = Double.parseDouble(periodStr) ;
        iPeriod = (int)dPeriod ;
        due = new Annuity(dAmount, dInterest, iPeriod) ;
        System.out.println(due.calculateFAD()) ;
        return due.calculateFAD() ;  //calculateFAD() is under Annuity.java
        }

Под AnnuityDueResultGUI.java:

AnnuityDueGUI due ;

public AnnuityDueResultGUI(AnnuityDueGUI due){  //1st solution failed
    this.due = due ;
}
public void grabResult(){  //1st solution failed
   result = this.due.calculateFADGUI() ;
}

public AnnuityDueResultGUI(){

    JPanel p6 = new JPanel() ;
    p6.setLayout(new GridLayout(2, 1)) ;
    p6.add(new JLabel("you will have approximately $" + result)) ;
    // other codes 
}

Из AnnuityDueGUI.java я могу видеть результат due.calculateFAD (). Но я хотел бы отобразить результат под AnnuityDueResultGUI.java

Я уже поместил их в пакет с именем «GUI», а также импортировал AnnuityDueGUI.java и Annuity.java.

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

Пожалуйста, помогите и спасибо заранее.

1 Ответ

1 голос
/ 12 августа 2010

Я думаю, вы забыли вызвать метод grabResult().

public AnnuityDueResultGUI(AnnuityDueGUI due){  
    this.due = due ;
    grabResult(); // calling this will store the value in the "result" instance variable

    JPanel p6 = new JPanel() ;
    p6.setLayout(new GridLayout(2, 1)) ;
    p6.add(new JLabel("you will have approximately $" + result)) ;
    // other codes 
}

private void grabResult(){  
   result = this.due.calculateFADGUI() ;
}

Кстати, вам следует избегать вызова открытых методов неконечного класса в вашем конструкторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...