Solved

GUI Java Mortgage Calculator

Posted on 2007-04-08
11
333 Views
Last Modified: 2011-10-03
Ok folks,
I have submitted this before and decided to play and modify it again. I have added an exit button to it and it seems I did everything correctly. But, there's always a but, I can't see the exit button in the window when I run it. can someone please help me find out what in the world I forgot. Maybe it is to many kids and easter candu but I am at a loss. Please any help would be great!!!! Thanks in advance.


import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
import javax.swing.*;



   public class MortgageCalculator2 extends JApplet {
     JLabel label_1;
     JLabel label_2;
     JLabel label_3;
     JTextField textfield_1;
     JTextField textfield_2;
     JTextField textfield_3;
     JButton calculate;
     JLabel label_4;
     JButton start_Over;
     JLabel label_5;
     JButton exit_Exit;
     JLabel label_6;

 public static void main(String args[]) {

        JFrame f = new JFrame("Mortgage Loan Calculator");
        MortgageCalculator2 calc = new MortgageCalculator2();
        f.getContentPane().add(calc);
        calc.init();
        f.pack();
        f.setVisible(true);

 }
    public void init() {
        MortgageCalculator2Layout customLayout = new MortgageCalculator2Layout();

        Container con = getContentPane();
        con.setFont(new Font("Helvetica", Font.PLAIN, 12));
        con.setLayout(customLayout);

        label_1 = new JLabel("Loan Amount");
        con.add(label_1);

        label_2 = new JLabel("Interest Rate");
        con.add(label_2);

        label_3 = new JLabel("Term");
        con.add(label_3);

        textfield_1 = new JTextField("");
        con.add(textfield_1);

        textfield_2 = new JTextField("");
        con.add(textfield_2);

        textfield_3 = new JTextField("");
        con.add(textfield_3);

        JButton calculate = new JButton("Calculate");
        con.add(calculate);

        label_4 = new JLabel("Payment");
        con.add(label_4);

        JButton start_Over = new JButton("Start Over");
        con.add(start_Over);

        label_5 = new JLabel("$ ");
        con.add(label_5);

        JButton exit_Exit = new JButton("Exit");
            con.add(exit_Exit);

            label_6 = new JLabel("Exit");
        con.add(label_6);

        setSize(getPreferredSize());


    //Add listener to "Calculate" button
    calculate.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent h)
    {
        // Initialize variables
        double amount = Double.parseDouble(textfield_1.getText());
        double irate = Double.parseDouble(textfield_2.getText());
        irate=irate/100;
        double term = Double.parseDouble(textfield_3.getText());

        //Equation for calculation of monthly payment
        double payment=Math.round((amount*irate/12*Math.pow(irate/12+1,term*12))/(Math.pow(irate/12+1,term*12)-1));

        label_5.setText("$ "+payment);

    }
    });
        //Add listener to "Start Over" button
        start_Over.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent h)
        {
        textfield_1.setText("");
        textfield_2.setText("");
        textfield_3.setText("");

        label_5.setText("$");
     }
     });

        //Add listener to "Exit" button
             exit_Exit.addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent h)
     {
            textfield_1.setText("");
            textfield_2.setText("");
        textfield_3.setText("");

            label_5.setText("$");
            label_6.setText("");
    }
    });

}

class MortgageCalculator2Layout implements LayoutManager {

    public MortgageCalculator2Layout() {
    }

    public void addLayoutComponent(String name, Component comp) {
    }

    public void removeLayoutComponent(Component comp) {
    }

    public Dimension preferredLayoutSize(Container parent) {
        Dimension dim = new Dimension(0, 0);

        Insets insets = parent.getInsets();
        dim.width = 539 + insets.left + insets.right;
        dim.height = 394 + insets.top + insets.bottom;

        return dim;
    }

    public Dimension minimumLayoutSize(Container parent) {
        Dimension dim = new Dimension(0, 0);
        return dim;
    }

    public void layoutContainer(Container parent) {
        Insets insets = parent.getInsets();

        Component c;
        c = parent.getComponent(0);
        if (c.isVisible()) {c.setBounds(insets.left+8,insets.top+8,96,24);}
        c = parent.getComponent(1);
        if (c.isVisible()) {c.setBounds(insets.left+8,insets.top+40,96,24);}
        c = parent.getComponent(2);
        if (c.isVisible()) {c.setBounds(insets.left+8,insets.top+72,96,24);}
        c = parent.getComponent(3);
        if (c.isVisible()) {c.setBounds(insets.left+112,insets.top+8,112,24);}
        c = parent.getComponent(4);
        if (c.isVisible()) {c.setBounds(insets.left+112,insets.top+40,112,24);}
        c = parent.getComponent(5);
        if (c.isVisible()) {c.setBounds(insets.left+112,insets.top+72,112,24);}
        c = parent.getComponent(6);
        if (c.isVisible()) {c.setBounds(insets.left+112,insets.top+104,112,24);}
        c = parent.getComponent(7);
        if (c.isVisible()) {c.setBounds(insets.left+8,insets.top+136,96,24);}
        c = parent.getComponent(8);
        if (c.isVisible()) {c.setBounds(insets.left+112,insets.top+192,112,24);}
        c = parent.getComponent(9);
        if (c.isVisible()) {c.setBounds(insets.left+112,insets.top+136,72,24);}
    }

}
}
0
Comment
Question by:drisden1
  • 5
  • 3
  • 3
11 Comments
 
LVL 24

Expert Comment

by:sciuriware
ID: 18873175
Do not add the components to a Container, but to a JPanel, which in turn is added to the Container.

More or less independent of this, replace:

    setSize(getPreferredSize());

by:

    pack();

;JOOP!
0
 
LVL 12

Accepted Solution

by:
keyurkarnik earned 500 total points
ID: 18873286
Here is the solution to your problem :


public void init()
   {
      MortgageCalculator2Layout customLayout = new MortgageCalculator2Layout();

      Container con = getContentPane();
      con.setFont(new Font("Helvetica", Font.PLAIN, 12));
      con.setLayout(customLayout);

      label_1 = new JLabel("Loan Amount");
      con.add(label_1);

      label_2 = new JLabel("Interest Rate");
      con.add(label_2);

      label_3 = new JLabel("Term");
      con.add(label_3);

      textfield_1 = new JTextField("");
      con.add(textfield_1);

      textfield_2 = new JTextField("");
      con.add(textfield_2);

      textfield_3 = new JTextField("");
      con.add(textfield_3);

      calculate = new JButton("Calculate");
      con.add(calculate);

      label_4 = new JLabel("Payment");
      con.add(label_4);

      start_Over = new JButton("Start Over");
      con.add(start_Over);

      label_5 = new JLabel("$ ");
      con.add(label_5);

      exit_Exit = new JButton("Exit1");
      con.add(exit_Exit);

      label_6 = new JLabel("Exit");
      con.add(label_6);

      setSize(getPreferredSize());



You have created local variables for Exit and others whereas you also have class variables declared. Change all to class variables as shown above.




Now here is what is preventing the Exit button from being displayed :


You have implemented the public void layoutContainer(Container parent) method - but in this you have added only 10 entries

Your exit button is your eleventh component, for which you need another entry in the public void layoutContainer.


Add this in the layout container at the bottom :

c = parent.getComponent(10);
         if (c.isVisible())
         {
            c.setBounds(insets.left + 112, insets.top + 220, 112, 24);
         }
0
 
LVL 12

Expert Comment

by:keyurkarnik
ID: 18873289
Though sciuri has given you good advice, thats not the issue you are facing - the issue is because you have not set the layoutContainer correctly.
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 12

Expert Comment

by:keyurkarnik
ID: 18873299
As you have already done all the code, I am pasting in the working version of the code as per my above comments

Make sure you implement the Exit action listener correctly
0
 
LVL 12

Expert Comment

by:keyurkarnik
ID: 18873301
package test;

import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Insets;
import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;


public class MG1 extends JApplet
{
   JLabel label_1;
   JLabel label_2;
   JLabel label_3;
   JTextField textfield_1;
   JTextField textfield_2;
   JTextField textfield_3;
   JButton calculate;
   JLabel label_4;
   JButton start_Over;
   JLabel label_5;
   JButton exit_Exit;
   JLabel label_6;

   public static void main(String args[])
   {

      JFrame f = new JFrame("Mortgage Loan Calculator");
      MG1 calc = new MG1();
      f.getContentPane().add(calc);
      calc.init();
      f.pack();
      f.setVisible(true);

   }
   public void init()
   {
      MortgageCalculator2Layout customLayout = new MortgageCalculator2Layout();

      Container con = getContentPane();
      con.setFont(new Font("Helvetica", Font.PLAIN, 12));
      con.setLayout(customLayout);

      label_1 = new JLabel("Loan Amount");
      con.add(label_1);

      label_2 = new JLabel("Interest Rate");
      con.add(label_2);

      label_3 = new JLabel("Term");
      con.add(label_3);

      textfield_1 = new JTextField("");
      con.add(textfield_1);

      textfield_2 = new JTextField("");
      con.add(textfield_2);

      textfield_3 = new JTextField("");
      con.add(textfield_3);

      calculate = new JButton("Calculate");
      con.add(calculate);

      label_4 = new JLabel("Payment");
      con.add(label_4);

      start_Over = new JButton("Start Over");
      con.add(start_Over);

      label_5 = new JLabel("$ ");
      con.add(label_5);

      exit_Exit = new JButton("Exit");
      con.add(exit_Exit);

      label_6 = new JLabel("Exit");
      con.add(label_6);

      setSize(getPreferredSize());


      //Add listener to "Calculate" button
      calculate.addActionListener(new ActionListener()
      {
         public void actionPerformed(ActionEvent h)
         {
            // Initialize variables
            double amount = Double.parseDouble(textfield_1.getText());
            double irate = Double.parseDouble(textfield_2.getText());
            irate = irate / 100;
            double term = Double.parseDouble(textfield_3.getText());

            //Equation for calculation of monthly payment
            double payment = Math.round((amount * irate / 12 * Math.pow(irate / 12 + 1, term * 12)) / (Math.pow(irate / 12 + 1, term * 12) - 1));

            label_5.setText("$ " + payment);

         }
      });
      //Add listener to "Start Over" button
      start_Over.addActionListener(new ActionListener()
      {
         public void actionPerformed(ActionEvent h)
         {
            textfield_1.setText("");
            textfield_2.setText("");
            textfield_3.setText("");

            label_5.setText("$");
         }
      });

      //Add listener to "Exit" button
      exit_Exit.addActionListener(new ActionListener()
      {
         public void actionPerformed(ActionEvent h)
         {
            textfield_1.setText("");
            textfield_2.setText("");
            textfield_3.setText("");

            label_5.setText("$");
         }
      });

   }

   class MortgageCalculator2Layout implements LayoutManager
   {

      public MortgageCalculator2Layout()
      {
      }

      public void addLayoutComponent(String name, Component comp)
      {
      }

      public void removeLayoutComponent(Component comp)
      {
      }

      public Dimension preferredLayoutSize(Container parent)
      {
         Dimension dim = new Dimension(0, 0);

         Insets insets = parent.getInsets();
         dim.width = 539 + insets.left + insets.right;
         dim.height = 394 + insets.top + insets.bottom;

         return dim;
      }

      public Dimension minimumLayoutSize(Container parent)
      {
         Dimension dim = new Dimension(0, 0);
         return dim;
      }

      public void layoutContainer(Container parent)
      {
         Insets insets = parent.getInsets();

         Component c;
         c = parent.getComponent(0);
         if (c.isVisible())
         {
            c.setBounds(insets.left + 8, insets.top + 8, 96, 24);
         }
         c = parent.getComponent(1);
         if (c.isVisible())
         {
            c.setBounds(insets.left + 8, insets.top + 40, 96, 24);
         }
         c = parent.getComponent(2);
         if (c.isVisible())
         {
            c.setBounds(insets.left + 8, insets.top + 72, 96, 24);
         }
         c = parent.getComponent(3);
         if (c.isVisible())
         {
            c.setBounds(insets.left + 112, insets.top + 8, 112, 24);
         }
         c = parent.getComponent(4);
         if (c.isVisible())
         {
            c.setBounds(insets.left + 112, insets.top + 40, 112, 24);
         }
         c = parent.getComponent(5);
         if (c.isVisible())
         {
            c.setBounds(insets.left + 112, insets.top + 72, 112, 24);
         }
         c = parent.getComponent(6);
         if (c.isVisible())
         {
            c.setBounds(insets.left + 112, insets.top + 104, 112, 24);
         }
         c = parent.getComponent(7);
         if (c.isVisible())
         {
            c.setBounds(insets.left + 8, insets.top + 136, 96, 24);
         }
         c = parent.getComponent(8);
         if (c.isVisible())
         {
            c.setBounds(insets.left + 112, insets.top + 192, 112, 24);
         }
         c = parent.getComponent(9);
         if (c.isVisible())
         {
            c.setBounds(insets.left + 112, insets.top + 136, 72, 24);
         }
         c = parent.getComponent(10);
         if (c.isVisible())
         {
            c.setBounds(insets.left + 112, insets.top + 220, 112, 24);
         }
         
         c = parent.getComponent(11);
         if (c.isVisible())
         {
            c.setBounds(insets.left + 8, insets.top + 220, 112, 24);
         }
         
      }

   }
}
0
 

Author Comment

by:drisden1
ID: 18873555
keyurkarnik,
Got it and I see what I forgot.....but here is a question. The exit button only clears the solution not exit the program. What did I forget?
0
 
LVL 24

Expert Comment

by:sciuriware
ID: 18874408
   //Add listener to "Exit" button
      exit_Exit.addActionListener(new ActionListener()
      {
         public void actionPerformed(ActionEvent h)
         {
            textfield_1.setText("");
            textfield_2.setText("");
            textfield_3.setText("");

            label_5.setText("$");
            System.exit(0);             //            THIS !!
         }
      });

;JOOP!
0
 

Author Comment

by:drisden1
ID: 18875020
sciuriware,
Thanks for the suggestion but it does not exit the program, all it does is clear the inputs. Here is the revised code with all suggestions:


import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Insets;
import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;


public class MortgageCalculator2 extends JApplet
{
   JLabel label_1;
   JLabel label_2;
   JLabel label_3;
   JTextField textfield_1;
   JTextField textfield_2;
   JTextField textfield_3;
   JButton calculate;
   JLabel label_4;
   JButton start_Over;
   JLabel label_5;
   JButton exit_Exit;
   JLabel label_6;

   public static void main(String args[])
   {

      JFrame f = new JFrame("Mortgage Loan Calculator");
      MG1 calc = new MG1();
      f.getContentPane().add(calc);
      calc.init();
      f.pack();
      f.setVisible(true);

   }
   public void init()
   {
      MortgageCalculator2Layout customLayout = new MortgageCalculator2Layout();

      Container con = getContentPane();
      con.setFont(new Font("Helvetica", Font.PLAIN, 12));
      con.setLayout(customLayout);

      label_1 = new JLabel("Loan Amount");
      con.add(label_1);

      label_2 = new JLabel("Interest Rate");
      con.add(label_2);

      label_3 = new JLabel("Term");
      con.add(label_3);

      textfield_1 = new JTextField("");
      con.add(textfield_1);

      textfield_2 = new JTextField("");
      con.add(textfield_2);

      textfield_3 = new JTextField("");
      con.add(textfield_3);

      calculate = new JButton("Calculate");
      con.add(calculate);

      label_4 = new JLabel("Payment");
      con.add(label_4);

      start_Over = new JButton("Start Over");
      con.add(start_Over);

      label_5 = new JLabel("$ ");
      con.add(label_5);

      exit_Exit = new JButton("Exit");
      con.add(exit_Exit);

      label_6 = new JLabel("Exit");
      con.add(label_6);

      setSize(getPreferredSize());


      //Add listener to "Calculate" button
      calculate.addActionListener(new ActionListener()
      {
         public void actionPerformed(ActionEvent h)
         {
            // Initialize variables
            double amount = Double.parseDouble(textfield_1.getText());
            double irate = Double.parseDouble(textfield_2.getText());
            irate = irate / 100;
            double term = Double.parseDouble(textfield_3.getText());

            //Equation for calculation of monthly payment
            double payment = Math.round((amount * irate / 12 * Math.pow(irate / 12 + 1, term * 12)) / (Math.pow(irate / 12 + 1, term * 12) - 1));

            label_5.setText("$ " + payment);

         }
      });
      //Add listener to "Start Over" button
      start_Over.addActionListener(new ActionListener()
      {
         public void actionPerformed(ActionEvent h)
         {
            textfield_1.setText("");
            textfield_2.setText("");
            textfield_3.setText("");

            label_5.setText("$");
         }
      });

      //Add listener to "Exit" button
              exit_Exit.addActionListener(new ActionListener()
              {
                 public void actionPerformed(ActionEvent h)
                 {
                    textfield_1.setText("");
                    textfield_2.setText("");
                    textfield_3.setText("");

                    label_6.setText("");
                    System.exit(6);
                 }
              });

   }

   class MortgageCalculator2Layout implements LayoutManager
   {

      public MortgageCalculator2Layout()
      {
      }

      public void addLayoutComponent(String name, Component comp)
      {
      }

      public void removeLayoutComponent(Component comp)
      {
      }

      public Dimension preferredLayoutSize(Container parent)
      {
         Dimension dim = new Dimension(0, 0);

         Insets insets = parent.getInsets();
         dim.width = 539 + insets.left + insets.right;
         dim.height = 394 + insets.top + insets.bottom;

         return dim;
      }

      public Dimension minimumLayoutSize(Container parent)
      {
         Dimension dim = new Dimension(0, 0);
         return dim;
      }

      public void layoutContainer(Container parent)
      {
         Insets insets = parent.getInsets();

         Component c;
         c = parent.getComponent(0);
         if (c.isVisible())
         {
            c.setBounds(insets.left + 8, insets.top + 8, 96, 24);
         }
         c = parent.getComponent(1);
         if (c.isVisible())
         {
            c.setBounds(insets.left + 8, insets.top + 40, 96, 24);
         }
         c = parent.getComponent(2);
         if (c.isVisible())
         {
            c.setBounds(insets.left + 8, insets.top + 72, 96, 24);
         }
         c = parent.getComponent(3);
         if (c.isVisible())
         {
            c.setBounds(insets.left + 112, insets.top + 8, 112, 24);
         }
         c = parent.getComponent(4);
         if (c.isVisible())
         {
            c.setBounds(insets.left + 112, insets.top + 40, 112, 24);
         }
         c = parent.getComponent(5);
         if (c.isVisible())
         {
            c.setBounds(insets.left + 112, insets.top + 72, 112, 24);
         }
         c = parent.getComponent(6);
         if (c.isVisible())
         {
            c.setBounds(insets.left + 112, insets.top + 104, 112, 24);
         }
         c = parent.getComponent(7);
         if (c.isVisible())
         {
            c.setBounds(insets.left + 8, insets.top + 136, 96, 24);
         }
         c = parent.getComponent(8);
         if (c.isVisible())
         {
            c.setBounds(insets.left + 112, insets.top + 192, 112, 24);
         }
         c = parent.getComponent(9);
         if (c.isVisible())
         {
            c.setBounds(insets.left + 112, insets.top + 136, 72, 24);
         }
         c = parent.getComponent(10);
         if (c.isVisible())
         {
            c.setBounds(insets.left + 112, insets.top + 220, 112, 24);
         }

         c = parent.getComponent(11);
         if (c.isVisible())
         {
            c.setBounds(insets.left + 8, insets.top + 220, 112, 24);
         }

      }

   }
}
0
 
LVL 24

Expert Comment

by:sciuriware
ID: 18875038
Sorry, System.exit() doesn't work for an Applet.
0
 

Author Comment

by:drisden1
ID: 18876310
sciuriware,
So, is it possible to use an exit command in this program or do I have to change everything? I've tried a few things and nothing seems to work.
0
 
LVL 12

Expert Comment

by:keyurkarnik
ID: 18881755
http://forum.java.sun.com/thread.jspa?threadID=329456&messageID=2970381

Try this, or just set the visible attribute to false or something. You cannot call system.exit thats for sure
0

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
egit plugin on eclipse 8 95
IBM TS2900 (3572) Tape Autoloader Java? 12 53
Hibernate Inheritance Strategy for Abstract Base class and two concrete classes 3 16
Java array 10 54
After being asked a question last year, I went into one of my moods where I did some research and code just for the fun and learning of it all.  Subsequently, from this journey, I put together this article on "Range Searching Using Visual Basic.NET …
For beginner Java programmers or at least those new to the Eclipse IDE, the following tutorial will show some (four) ways in which you can import your Java projects to your Eclipse workbench. Introduction While learning Java can be done with…
Viewers learn about the scanner class in this video and are introduced to receiving user input for their programs. Additionally, objects, conditional statements, and loops are used to help reinforce the concepts. Introduce Scanner class: Importing…
Viewers will learn about basic arrays, how to declare them, and how to use them. Introduction and definition: Declare an array and cover the syntax of declaring them: Initialize every index in the created array: Example/Features of a basic arr…

680 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question