Created
September 23, 2015 02:03
-
-
Save carbonrobot/1e36a5e5f061e9c8f16b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Import all required Packages | |
import javax.swing.*; | |
import javax.swing.table.DefaultTableModel; | |
import javax.swing.table.TableColumn; | |
import java.awt.*; | |
import java.text.*; | |
import java.awt.event.*; | |
public class InterestApplet extends JApplet implements ActionListener { | |
JPanel row1; | |
JLabel lblAmount; | |
JTextField txtAmount; | |
JLabel lblInterest; | |
JTextField txtInterest; | |
JLabel lblTerm; | |
JTextField txtTerm; | |
JPanel row2; | |
JTable resultsTable; | |
JScrollPane textPane; | |
JPanel row3; | |
JButton calculateButton; | |
JButton clearButton; | |
JButton exitButton; | |
public void init() | |
{ | |
//Build GUI | |
setSize(1024, 720); | |
// row1 | |
row1 = new JPanel(); | |
lblAmount = new JLabel(" Mortgage: $", JLabel.LEFT); | |
txtAmount = new JTextField(10); | |
lblInterest = new JLabel("Interest %", JLabel.LEFT); | |
txtInterest = new JTextField(6); | |
lblTerm = new JLabel("Term in Years", JLabel.LEFT); | |
txtTerm = new JTextField(6); | |
row1.add(lblAmount); | |
row1.add(txtAmount); | |
row1.add(lblInterest); | |
row1.add(txtInterest); | |
row1.add(lblTerm); | |
row1.add(txtTerm); | |
// row2 | |
row2 = new JPanel(new BorderLayout()); | |
DefaultTableModel model = CreateTableModel(); | |
resultsTable = new JTable(model); | |
textPane = new JScrollPane(resultsTable); | |
textPane.setPreferredSize(new Dimension(610,200)); | |
row2.add(textPane,BorderLayout.CENTER); | |
//row 3 | |
row3 = new JPanel(new GridLayout(1,3,75,1)); | |
calculateButton = new JButton("Calculate"); | |
clearButton = new JButton("Clear"); | |
exitButton = new JButton("Exit"); | |
//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 userAmount = Double.parseDouble(txtAmount.getText()); | |
Double userInterest = Double.parseDouble(txtInterest.getText()); | |
Integer userTerm = Integer.parseInt(txtTerm.getText()); | |
CalculateMonthlyPayment(userAmount, userInterest, userTerm); | |
} | |
if (e.getSource() == clearButton){ | |
DefaultTableModel model = CreateTableModel(); | |
resultsTable.setModel(model); | |
txtAmount.setText(""); | |
txtInterest.setText(""); | |
txtTerm.setText(""); | |
} | |
if (e.getSource() == exitButton){ | |
setVisible(false); | |
System.exit(0); | |
} | |
} | |
private void addRow(int payment, double amount, double interest, double principal, double balance) | |
{ | |
DefaultTableModel model = (DefaultTableModel)resultsTable.getModel(); | |
model.addRow(new Object[]{ | |
String.format("%s", payment), | |
String.format("%.2f", amount), | |
String.format("%.2f", interest), | |
String.format("%.2f", principal), | |
String.format("%.2f", balance) | |
}); | |
} | |
private void CalculateMonthlyPayment(double p,double ir, int ny){ | |
double b; | |
double im =(ir/12)/100; | |
int nm = ny*12; | |
double r,t,a; | |
int i; | |
r=p*im*Math.pow(1+im,(double)nm)/(Math.pow(1+im,(double)nm)-1); | |
//print amortization schedule for all months except the last month | |
for(i=1;i<nm;i++){ | |
t = p*im;//interest paid | |
a = r-t; //principal paid | |
b = p-a; //new balance | |
addRow(i, r, t, a, b); | |
p = b; //update old balance | |
} | |
//last month | |
a = p; | |
t = p*im; | |
r = a+t; | |
b = 0.0; | |
addRow(i, r, t, a, b); | |
} | |
private DefaultTableModel CreateTableModel(){ | |
DefaultTableModel model = new DefaultTableModel(); | |
model.addColumn("Payment"); | |
model.addColumn("Monthly Payment"); | |
model.addColumn("Interest Payment"); | |
model.addColumn("Principal Payment"); | |
model.addColumn("Balance"); | |
return model; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment