import javax.swing.*;
import java.awt.*;
import java.text.*;
import java.awt.event.*;
public class SchoolApplet8 extends JApplet implements ActionListener {
double userAmount;
double userInterest;
double userTerm;
int month = 0;
double remainBalance = 0;
double interestPayment = 0;
double principalPaid = 0;
JPanel row1;
JLabel lblAmount;
JTextField txtAmount;
JLabel lblInterest;
JTextField txtInterest;
JLabel lblTerm;
JTextField txtTerm;
JLabel lblMonthlyPayments;
JTextField txtMonthlyPayments;
JLabel lblPayment;
JTextField txtPayment;
JPanel row2;
JLabel lblHeader;
JTextArea txtResults;
JScrollPane textPane;
JPanel row3;
JButton calculateButton;
JButton clearButton;
JButton exitButton;
public void init()
{
//Instantiate GUI Components
// row1
row1 = new JPanel();
lblAmount = new JLabel(" Loan Amount: $", JLabel.LEFT);
txtAmount = new JTextField(10);
lblMonthlyPayments = new JLabel("Monthly Payments", JLabel.LEFT);
txtMonthlyPayments = new JTextField(6);
lblInterest = new JLabel("Interest Per Period %", JLabel.LEFT);
txtInterest = new JTextField(6);
lblTerm = new JLabel("Term in Years", JLabel.LEFT);
txtTerm = new JTextField(6);
// TO DO
// create a new JLabel and assign it to lblPayment
// create a new JTextField(10) and assign it to txtPayment
// row2
row2 = new JPanel(new BorderLayout());
String pad = " ";
lblHeader = new JLabel("Payment #"+pad+"Monthly Payment Amount:"+pad+"Interest Paid:"+pad+"Principal"+pad+"Balance:");
txtResults = new JTextArea(10, 53);
textPane = new JScrollPane(txtResults);
//row 3
row3 = new JPanel(new GridLayout(1,3,75,1));
calculateButton = new JButton("Calculate");
clearButton = new JButton("Clear");
exitButton = new JButton("Exit");
//Build GUI
setSize(600, 250);
row1.add(lblAmount);
row1.add(txtAmount);
row1.add(lblMonthlyPayments);
row1.add(txtMonthlyPayments);
row1.add(lblInterest);
row1.add(txtInterest);
row1.add(lblTerm);
row1.add(txtTerm);
// To DO
// add lblPayment & txtPayment to row1
// set editable of txtPayment to false: txtPayment.setEditable(false);
//
textPane.setPreferredSize(new Dimension(610,200));
row2.add(lblHeader,BorderLayout.NORTH);
row2.add(textPane,BorderLayout.CENTER);
//Create Calculate button and add listener
calculateButton.addActionListener(this);
clearButton.addActionListener(this);
exitButton.addActionListener(this);
row3.add(exitButton);
row3.add(clearButton);
row3.add(calculateButton);
getContentPane().add(row1,BorderLayout.NORTH);
getContentPane().add(row2,BorderLayout.CENTER);
getContentPane().add(row3,BorderLayout.SOUTH);
}
//Define actions performed for buttons
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == calculateButton)
{
double balance = 0;
double monthPayment=0;
userAmount = Double.parseDouble(txtAmount.getText());
userInterest = Double.parseDouble(txtInterest.getText());
userTerm = Double.parseDouble(txtTerm.getText());
//formats answer in currency format then to string format for display
NumberFormat fmt = NumberFormat.getCurrencyInstance();
monthPayment = CalculateMonthlyPayment();
String payment = fmt.format(monthPayment);
// TO DO
// Display payment in txtPayment : txtPayment.setText(" "+ payment);
//
balance = userAmount;
month = (int)userTerm * 12;
for(int index = 1; index <= month ; index++)
{
interestPayment = balance * (userInterest * .01/12);
principalPaid = monthPayment - interestPayment;
remainBalance = balance - principalPaid;
txtResults.append(" " + index + "\t\t "+ fmt.format(balance) + "\t\t"
+ fmt.format(interestPayment) + "\t\t" + fmt.format(remainBalance) + "\n");
balance = remainBalance;
}
}
else if (e.getSource() == clearButton)
{
txtAmount.setText(null);
txtPayment.setText(null);
txtResults.setText(null);
}
else if (e.getSource() == exitButton)
{
System.exit(0);
}
}
//Mortgage Payment Calculations
double CalculateMonthlyPayment()
{
return (userAmount * ((1 + (userInterest*.01)/12)-1) / (1-(Math.pow((1+(userInterest*.01)/12),-(userTerm*12)))));
}
}
bruizer 0 Newbie Poster
NormR1 563 Posting Sage Team Colleague
bruizer 0 Newbie Poster
bruizer 0 Newbie Poster
NormR1 563 Posting Sage Team Colleague
bruizer 0 Newbie Poster
NormR1 563 Posting Sage Team Colleague
Be a part of the DaniWeb community
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.