//Title: Mortgage Calculator //Version: //Copyright: Copyright (c) 1998 //Author: Al Williams //Company: AWC //Description: This is a mortgage calculator applet //created with JBuilder package mcalc; import java.awt.*; import java.awt.event.*; import java.applet.*; import com.sun.java.swing.*; import java.text.NumberFormat; import java.text.ParseException; import borland.jbcl.layout.*; public class Mcalc extends JApplet { boolean isStandalone = false; TextField Principal = new TextField(); Label label1 = new Label(); XYLayout xYLayout1 = new XYLayout(); TextField Rate = new TextField(); Label label2 = new Label(); TextField Months = new TextField(); Label label3 = new Label(); Button Calc = new Button(); Label Payment = new Label(); Label Total = new Label(); //Get a parameter value public String getParameter(String key, String def) { return isStandalone ? System.getProperty(key, def) : (getParameter(key) != null ? getParameter(key) : def); } //Construct the applet public Mcalc() { } //Initialize the applet public void init() { try { jbInit(); } catch (Exception e) { e.printStackTrace(); } } //Component initialization private void jbInit() throws Exception { this.getContentPane().setLayout(xYLayout1); label1.setText("Principal:"); xYLayout1.setHeight(300); xYLayout1.setWidth(313); label2.setText("Interest Rate:"); label3.setText("Months:"); Calc.setLabel("Calculate"); Calc.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { Calc_actionPerformed(e); } }); this.setSize(400,300); this.getContentPane().add(Principal, new XYConstraints(103, 16, 183, -1)); this.getContentPane().add(label1, new XYConstraints(9, 16, -1, -1)); this.getContentPane().add(Rate, new XYConstraints(104, 58, 183, -1)); this.getContentPane().add(label2, new XYConstraints(9, 60, -1, -1)); this.getContentPane().add(Months, new XYConstraints(106, 102, 183, -1)); this.getContentPane().add(label3, new XYConstraints(11, 104, -1, -1)); this.getContentPane().add(Calc, new XYConstraints(121, 158, 80, 34)); this.getContentPane().add(Payment, new XYConstraints(18, 214, 142, -1)); this.getContentPane().add(Total, new XYConstraints(19, 240, 142, -1)); } //Start the applet public void start() { } //Stop the applet public void stop() { } //Destroy the applet public void destroy() { } //Get Applet information public String getAppletInfo() { return "Mortgage Calculator by Al Williams"; } //Get parameter info public String[][] getParameterInfo() { return null; } //Main method public static void main(String[] args) { Mcalc applet = new Mcalc(); applet.isStandalone = true; JFrame frame = new JFrame(); frame.setTitle("Mortgage Calculator"); frame.getContentPane().add(applet, BorderLayout.CENTER); applet.init(); applet.start(); frame.setSize(400,320); Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); frame.setLocation((d.width - frame.getSize().width) / 2, (d.height - frame.getSize().height) / 2); frame.setVisible(true); } void Calc_actionPerformed(ActionEvent e) { float intrate, amt; int period; float intpermonth; float pmt,total; double factor; NumberFormat fmt = NumberFormat.getCurrencyInstance(); NumberFormat gfmt = NumberFormat.getInstance(); // read inputs intrate= 0.0f; try { intrate=gfmt.parse(Rate.getText()).floatValue()/100.0f; } catch (ParseException ex) { Payment.setText("Bad period"); return; } period=Integer.parseInt(Months.getText()); amt=0.0f; try { amt=gfmt.parse(Principal.getText()).floatValue(); } catch (ParseException ex) { Payment.setText("Bad amount"); return; } // calculate intpermonth=intrate/12; factor=Math.exp(-period* Math.log(1.0+intpermonth)); pmt=(float)(amt*intpermonth/(1.0-factor)); total=pmt*period; // set outputs -- use NumberFormat to format numbers Payment.setText("Payment = " + fmt.format(pmt)); Total.setText("Total = " + fmt.format(total)); } }