Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.*;
- import javax.swing.border.*;
- import java.lang.*;
- public class LoanSchedule extends JApplet implements ActionListener
- {
- //Create all needed labels
- private JLabel jlblLoanAmount = new JLabel("Loan Amount");
- private JLabel jlblNumOfYears = new JLabel("Number Of Years");
- private JLabel jlblInterestRate = new JLabel("Interest Rate (Annual)");
- //Create all needed text fields
- private JTextField jtfLoanAmount = new JTextField(10);
- private JTextField jtfNumOfYears = new JTextField(10);
- private JTextField jtfInterestRate = new JTextField(10);
- //Calculate button is also needed
- private JButton jbtCalculate = new JButton("Amortize Loan");
- //...and a text area where the results will be displayed
- private JTextArea jtaResults = new JTextArea();
- public void init()
- {
- //Panel p1 will hold the input
- JPanel p1 = new JPanel();
- p1.setLayout(new GridLayout(3,2));
- p1.add(jlblLoanAmount);
- p1.add(jtfLoanAmount);
- p1.add(jlblNumOfYears);
- p1.add(jtfNumOfYears);
- p1.add(jlblInterestRate);
- p1.add(jtfInterestRate);
- //Panel p2 will hold panel p1 and the calculate button
- JPanel p2 = new JPanel();
- p2.setLayout(new BorderLayout());
- p2.setBorder(new TitledBorder("Enter loan amount, Number of years and annual interest rate"));
- p2.add(p1, BorderLayout.WEST);
- p2.add(jbtCalculate, BorderLayout.EAST);
- //Action listener for the button
- jbtCalculate.addActionListener(this);
- //Make the text area scrollable and uneditable
- JScrollPane scrollPane = new JScrollPane(jtaResults);
- jtaResults.setRows(12);
- jtaResults.setEditable(false);
- //Place the two panels to the applet
- getContentPane().add(p2, BorderLayout.CENTER);
- getContentPane().add(scrollPane, BorderLayout.SOUTH);
- }
- public void actionPerformed(ActionEvent e)
- {
- if(e.getSource() == jbtCalculate)
- calculateLoan();
- else
- System.out.println("you will never see this text!");
- /*
- Because we only have one element that uses actionListener (jbtCalculate) this method should only have
- a call to calculate() method in it but i put the if-else statement just to show that it can handle other
- elements with alctiolistener. For example, if we had another button that had addActionListener attached to it
- we could say something like this:
- if(e.getSource() == jbtCalculate)
- {
- do something here;
- }
- else if(e.getSource() == jbtSomeOtherElement)
- {
- do something else here;
- }
- */
- }
- public void calculateLoan()
- {
- int numberOfYears = Integer.parseInt(jtfNumOfYears.getText());
- double loanAmount = Double.parseDouble(jtfLoanAmount.getText());
- double annualInterestRate = (Double.parseDouble(jtfInterestRate.getText())) / 100;
- double monthlyInterestRate = annualInterestRate / 12;
- double numberOfMonths = numberOfYears * 12;
- double monthlyPayment = loanAmount * (monthlyInterestRate / (1 - Math.pow(1 + monthlyInterestRate, - numberOfMonths)));
- double totalPayment = monthlyPayment * numberOfMonths;
- double balance = loanAmount;
- double interest;
- double principal;
- jtaResults.append("Payment#\t" + "Interest\t" + "Principal\t" + "Balance\n\n");
- for(int i = 0; i < numberOfYears * 12; i++)
- {
- interest = (int)(monthlyInterestRate * balance * 100) / 100.0;
- principal = (int)((monthlyPayment - interest) * 100 ) / 100.0;
- balance = (int)((balance - principal) * 100 ) / 100.0;
- jtaResults.append(i + 1 + "\t" + interest + "\t" + principal + "\t" + balance +"\n");
- }
- jtaResults.append("\n\nMonthly Payment: $" + (int)(monthlyPayment * 100) / 100.0 + "\n");
- jtaResults.append("Total Payment: $" + (int)(totalPayment * 100) / 100.0 + "\n\n");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement