Improve company productivity with a Business Account.Sign Up

x
?
Solved

GUI Java Mortgage Calculator

Posted on 2007-04-08
11
Medium Priority
?
359 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 2000 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
Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

 
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

Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

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…
Java Flight Recorder and Java Mission Control together create a complete tool chain to continuously collect low level and detailed runtime information enabling after-the-fact incident analysis. Java Flight Recorder is a profiling and event collectio…
Viewers learn about the “for” loop and how it works in Java. By comparing it to the while loop learned before, viewers can make the transition easily. You will learn about the formatting of the for loop as we write a program that prints even numbers…
This video teaches viewers about errors in exception handling.

587 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