GUI Chart problem

Pie chart is not accepting data from calculations

Page 1 of 1

2 Replies - 3415 Views - Last Post: 30 June 2009 - 10:49 PM Rate Topic: -----

#1 smallfox  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 5
  • Joined: 02-May 09

GUI Chart problem

Post icon  Posted 30 June 2009 - 09:52 PM

I am almost finished adding a pie chart to my program, but am getting errors where I am putting my calculations into my chart. It does not recognise the variables. Specificaly the errors are in these lines
pie.addSlice(Color.yellow, BalPrincipal);
pie.addSlice(Color.blue, CurInterest);
It is not recognising the BalPrincipal and CurInterest variables although the calculations and output to my Jtext area are funtional. Please advise!! :D

Here is my code:

/*
 * McBride Financial Services Mortgage Calculator Version 4.0
 * Written by Andrea Anderson
 * For PRG421 University of Phoenix Professior Brad Purdy
 * Created on Jun 5, 2009, 7:49:13 PM
 * Scope:Write the program in Java (with a graphical user interface) and have it
 * calculate and display the mortgage payment amount from user input of the
 * amount of the mortgage, the term of the mortgage, and the interest rate of
 * the mortgage. Allow the user to loop back and enter new data or quit.
 * Please insert comments in the program to document the program.
 * Tested against calculator on www.mortgagecalculator.com
 * ***************************************************************************
 * Change request #5
 * Write the program in Java (with a graphical user interface) and have it
 * calculate and display the mortgage payment amount from user input of the amount
 * of the mortgage and the user's selection from a menu of available mortgage loans:

- 7 years at 5.35%
- 15 years at 5.5%
- 30 years at 5.75%

Use an array for the mortgage data for the different loans. Display the mortgage
 * payment amount followed by the loan balance and interest paid for each payment
 * over the term of the loan. Allow the user to loop back and enter a new amount
 * and make a new selection or quit. Please insert comments in the program to
 * document the program.
 *
 * Tested against calculator on www.mortgagecalculator.com
 * ****************************************************************************
 * Change Request #7
 * Requestor:  Ninfa Pendleton - Rapid City, SD
 * Write the program in Java (with a graphical user interface) and have it calculate
 * and display the mortgage payment amount from user input of the amount of the
 * mortgage and the user's selection from a menu of available mortgage loans:
 * - 7 years at 5.35%
 * - 15 years at 5.5%
 * - 30 years at 5.75%
 * Use an array for the mortgage data for the different loans. Read the interest
 * rates to fill the array from a sequential file. Display the mortgage payment
 * amount followed by the loan balance and interest paid for each payment over
 * the term of the loan. Add graphics in the form of a chart. Allow the user to
 * loop back and enter a new amount and make a new selection or quit. Please
 * insert comments in the program to document the program.
 *
 * Tested against calculator on http://www.countrywide.com/calculators/calculator.aspx?CalcType=Amortization
 */

/*
 * MortgageCalculatorUI.java
 *
 * Created on Jun 5, 2009, 7:49:13 PM
 */
package my.mortgagecalculator;

import java.text.*;
import java.io.*;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Scanner;
import java.util.Locale;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.awt.*;
import javax.swing.*;

/**

 * @author Andrea Anderson
 */
public class MortgageCalculatorUI extends javax.swing.JFrame {

	/** Creates new form MortgageCalculatorUI */
	public MortgageCalculatorUI() {
		initComponents();
	}
	/** This method is called from within the constructor to
	 * initialize the form.
	 * WARNING: Do NOT modify this code. The content of this method is
	 * always regenerated by the Form Editor.
	 */
	@SuppressWarnings("unchecked")
	DecimalFormat decimalPlaces = new DecimalFormat("0.00");//formating decimals

	// <editor-fold defaultstate="collapsed" desc="Generated Code">
	private void initComponents() {

		Menujpanel = new javax.swing.JPanel();
		MortgagejLabel = new javax.swing.JLabel();
		Amountjtextfield = new javax.swing.JTextField();
		MenujLabel = new javax.swing.JLabel();
		Calculatejbutton = new javax.swing.JButton();
		jScrollPane2 = new javax.swing.JScrollPane();
		MenujList = new javax.swing.JList();
		Paymentjlabel = new javax.swing.JLabel();
		Paymentjtextfield = new javax.swing.JTextField();
		TitlejLabel = new javax.swing.JLabel();
		Clearjbutton = new javax.swing.JButton();
		Exitjbutton = new javax.swing.JButton();
		jScrollPane1 = new javax.swing.JScrollPane();
		Schedualjtextarea = new javax.swing.JTextArea();
		Chartjbutton = new javax.swing.JButton();
		pie = new javax.swing.JPanel();

		setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

		Menujpanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Mortgage Menu"));

		MortgagejLabel.setText("Mortgage amount:");

		MenujLabel.setText("Avalable mortgage loans:");

		Calculatejbutton.setText("Calculate");
		Calculatejbutton.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				CalculatejbuttonActionPerformed(evt);
			}
		});

		MenujList.setModel(new javax.swing.AbstractListModel() {
			String[] strings = { "7 years at 5.35%", "15 years at 5.5%", "30 years at 5.75%", " " };
			public int getSize() { return strings.length; }
			public Object getElementAt(int i) { return strings[i]; }
		});
		MenujList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
		MenujList.setSelectedIndex(0);
		jScrollPane2.setViewportView(MenujList);

		Paymentjlabel.setText("Your monthly payment will be:");

		Paymentjtextfield.setEditable(false);

		javax.swing.GroupLayout MenujpanelLayout = new javax.swing.GroupLayout(Menujpanel);
		Menujpanel.setLayout(MenujpanelLayout);
		MenujpanelLayout.setHorizontalGroup(
			MenujpanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
			.addGroup(MenujpanelLayout.createSequentialGroup()
				.addGroup(MenujpanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
					.addGroup(MenujpanelLayout.createSequentialGroup()
						.addGap(32, 32, 32)
						.addGroup(MenujpanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
							.addComponent(MenujLabel, javax.swing.GroupLayout.Alignment.TRAILING)
							.addComponent(MortgagejLabel, javax.swing.GroupLayout.Alignment.TRAILING))
						.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
						.addGroup(MenujpanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
							.addComponent(Amountjtextfield, javax.swing.GroupLayout.DEFAULT_SIZE, 145, Short.MAX_VALUE)
							.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 145, Short.MAX_VALUE)))
					.addGroup(MenujpanelLayout.createSequentialGroup()
						.addGap(136, 136, 136)
						.addComponent(Calculatejbutton))
					.addGroup(MenujpanelLayout.createSequentialGroup()
						.addContainerGap()
						.addComponent(Paymentjlabel)
						.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
						.addComponent(Paymentjtextfield, javax.swing.GroupLayout.DEFAULT_SIZE, 145, Short.MAX_VALUE)))
				.addContainerGap())
		);
		MenujpanelLayout.setVerticalGroup(
			MenujpanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
			.addGroup(MenujpanelLayout.createSequentialGroup()
				.addGroup(MenujpanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
					.addComponent(MortgagejLabel)
					.addComponent(Amountjtextfield, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
				.addGap(11, 11, 11)
				.addGroup(MenujpanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
					.addComponent(MenujLabel)
					.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE))
				.addGap(27, 27, 27)
				.addComponent(Calculatejbutton)
				.addGap(32, 32, 32)
				.addGroup(MenujpanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
					.addComponent(Paymentjlabel)
					.addComponent(Paymentjtextfield, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
				.addContainerGap())
		);

		TitlejLabel.setFont(new java.awt.Font("Tahoma", 1, 18));
		TitlejLabel.setText("Mc Bride Mortgage Calculator");

		Clearjbutton.setText("Clear");
		Clearjbutton.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				ClearjbuttonActionPerformed(evt);
			}
		});

		Exitjbutton.setText("Exit");
		Exitjbutton.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				ExitjbuttonActionPerformed(evt);
			}
		});

		jScrollPane1.setBorder(javax.swing.BorderFactory.createTitledBorder("Payment schedule"));

		Schedualjtextarea.setColumns(20);
		Schedualjtextarea.setEditable(false);
		Schedualjtextarea.setFont(new java.awt.Font("Century", 0, 13));
		Schedualjtextarea.setLineWrap(true);
		Schedualjtextarea.setRows(5);
		Schedualjtextarea.setWrapStyleWord(true);
		jScrollPane1.setViewportView(Schedualjtextarea);

		Chartjbutton.setText("Compare interest chart");

		javax.swing.GroupLayout pieLayout = new javax.swing.GroupLayout(pie);
		pie.setLayout(pieLayout);
		pieLayout.setHorizontalGroup(
			pieLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
			.addGap(0, 413, Short.MAX_VALUE)
		);
		pieLayout.setVerticalGroup(
			pieLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
			.addGap(0, 232, Short.MAX_VALUE)
		);

		javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
		getContentPane().setLayout(layout);
		layout.setHorizontalGroup(
			layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
			.addGroup(layout.createSequentialGroup()
				.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
					.addGroup(layout.createSequentialGroup()
						.addContainerGap()
						.addComponent(pie, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
						.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
						.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
							.addGroup(layout.createSequentialGroup()
								.addGap(227, 227, 227)
								.addComponent(Clearjbutton)
								.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
								.addComponent(Exitjbutton))
							.addGroup(layout.createSequentialGroup()
								.addGap(111, 111, 111)
								.addComponent(Chartjbutton))))
					.addGroup(layout.createSequentialGroup()
						.addGap(242, 242, 242)
						.addComponent(TitlejLabel))
					.addGroup(layout.createSequentialGroup()
						.addComponent(Menujpanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
						.addGap(18, 18, 18)
						.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 417, javax.swing.GroupLayout.PREFERRED_SIZE)))
				.addContainerGap())
		);
		layout.setVerticalGroup(
			layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
			.addGroup(layout.createSequentialGroup()
				.addContainerGap()
				.addComponent(TitlejLabel)
				.addGap(26, 26, 26)
				.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
					.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 227, Short.MAX_VALUE)
					.addComponent(Menujpanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
				.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
					.addGroup(layout.createSequentialGroup()
						.addGap(70, 70, 70)
						.addComponent(Chartjbutton)
						.addGap(134, 134, 134)
						.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
							.addComponent(Exitjbutton)
							.addComponent(Clearjbutton)))
					.addGroup(layout.createSequentialGroup()
						.addGap(18, 18, 18)
						.addComponent(pie, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
				.addContainerGap())
		);

		pack();
	}// </editor-fold>

	private void ExitjbuttonActionPerformed(java.awt.event.ActionEvent evt) {											
		System.exit(0);//exits program

}										   

	private void ClearjbuttonActionPerformed(java.awt.event.ActionEvent evt) {											 
		//Clear fields method to clear the fields and allow user to use application again
		Amountjtextfield.setText("");
		Schedualjtextarea.setText("");
		Paymentjtextfield.setText("");

}											

	private void CalculatejbuttonActionPerformed(java.awt.event.ActionEvent evt) {												 
		//calculate method takes data from the list, calculates the payment, loan balance
		//and interest paid and displays it in the text area in a scoll pane.


		double principal, BalPrincipal, payment, CurInterest, MoInterest, CurPrincipal; //declares doubles variables
		int counter, interval, Term; // delares integer variables
		String StrAmort;//declares string variable
		String FileContent = ",";


		//initialize variables
		CurInterest = 0;
		principal = 0;
		BalPrincipal = 0;
		interval = 0;//counter for while loop
		StrAmort = "";
		MoInterest = 0;
		Term = 0;
		counter = 0;
		CurPrincipal = 0;




		//parseinput from the payment field from a string to a double   
		principal = Double.parseDouble(Amountjtextfield.getText());

		//get the index of the first selected item
		interval = MenujList.getSelectedIndex();

		//Create Arrays for menu
		double[] inArray; //declares an array for interest rate
		inArray = new double[3];//allocates memory for 3 integers
//		inArray[0] = 5.35; // initialize first element
//		inArray[1] = 5.5; // initialize second  element
//		inArray[2] = 5.75; // initialize third element

		int[] yrArray; // declares an array for term of mortgage
		yrArray = new int[3];// allocates memory for 3 terms
		yrArray[0] = 7;// initailize first element
		yrArray[1] = 15;//initialize second element
		yrArray[2] = 30;//intialize third element

		//Read from sequential file

		Scanner ScanFile = null;
		int count = 0;//for interest array loop counter

		try {
			// The file usnumbers.txt is placed at the root of the poject ReadFile for this example
			ScanFile = new Scanner(new BufferedReader(new FileReader("data.txt")));
			ScanFile.useLocale(Locale.US);

			// While there is data in the text file read one double at a time.
			while (ScanFile.hasNext()) {
				if (ScanFile.hasNextDouble()) {

					inArray[count] = ScanFile.nextDouble(); // Read the next double
					FileContent = FileContent + inArray[count] + "\n"; // Place the double in a string for printing out latter.
					count++; // keep track of index
				} else {
					ScanFile.next();
				}
			}

		} catch (FileNotFoundException ex) {
			Logger.getLogger(MortgageCalculatorUI.class.getName()).log(Level.SEVERE, null, ex);
		} finally {
			ScanFile.close();
		}


		// calculate mortgage payment.
		MoInterest = (inArray[interval] / 100) / 12;// converts interest rate to decimal
		Term = (yrArray[interval] * 12);//converts years into term payments
		payment = (principal * (MoInterest) / (1 - Math.pow((1 + (MoInterest)), -Term)));

		//pass payment value to jTextfield and convert from double to string
		Paymentjtextfield.setText(String.valueOf(decimalPlaces.format(payment)));

		BalPrincipal = principal;// sets original balance of prinicpal

		//loop while calculating principal balance and current interest

		while (BalPrincipal > .01) {

			counter++;

			//Calculate the interest paid per month:
			CurInterest = BalPrincipal * MoInterest;


			//Calculate new balance for each payment
			CurPrincipal = payment - CurInterest;

			//resets balance of principal
			BalPrincipal = BalPrincipal - CurPrincipal;

			//loop while calculating principal balance and current interest
			while (BalPrincipal > .01) {
				counter++;
				//Calculate the interest paid per month:
				CurInterest = BalPrincipal * MoInterest;

				//Calculate new balance for each payment
				CurPrincipal = payment - CurInterest;

				//resets balance of principal
				BalPrincipal = BalPrincipal - CurPrincipal;

				//output to screen
				StrAmort = StrAmort + "Payment # " + counter + " Balance of Principal is $" + decimalPlaces.format(BalPrincipal) + ", Interest paid is $" + decimalPlaces.format(CurInterest) + "\n";

			}

			Schedualjtextarea.setText(StrAmort);
		}
	}
 public

	 class Sample extends javax.swing.JFrame {

		public void ShowChart() {

			Container pane = getContentPane();

			PiePanel pie = new PiePanel(2);


			pie.addSlice(Color.yellow, BalPrincipal);
			pie.addSlice(Color.blue, CurInterest);
			
			//Jframe for chart
				javax.swing.GroupLayout pieLayout = new javax.swing.GroupLayout(pie);
		pie.setLayout(pieLayout);
		pieLayout.setHorizontalGroup(
			pieLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
			.addGap(0, 413, Short.MAX_VALUE)
		);
		pieLayout.setVerticalGroup(
			pieLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
			.addGap(0, 232, Short.MAX_VALUE)
		);

		javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
		getContentPane().setLayout(layout);
		layout.setHorizontalGroup(
			layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
			.addGroup(layout.createSequentialGroup()
				.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
					.addGroup(layout.createSequentialGroup()
						.addContainerGap()
						.addComponent(pie, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
						.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
						.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
							.addGroup(layout.createSequentialGroup()
								.addGap(227, 227, 227)
								.addComponent(Clearjbutton)
								.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
								.addComponent(Exitjbutton))
							.addGroup(layout.createSequentialGroup()
								.addGap(111, 111, 111)
								.addComponent(Chartjbutton))))
					.addGroup(layout.createSequentialGroup()
						.addGap(242, 242, 242)
						.addComponent(TitlejLabel))
					.addGroup(layout.createSequentialGroup()
						.addComponent(Menujpanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
						.addGap(18, 18, 18)
						.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 417, javax.swing.GroupLayout.PREFERRED_SIZE)))
				.addContainerGap())
		);
		layout.setVerticalGroup(
			layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
			.addGroup(layout.createSequentialGroup()
				.addContainerGap()
				.addComponent(TitlejLabel)
				.addGap(26, 26, 26)
				.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
					.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 227, Short.MAX_VALUE)
					.addComponent(Menujpanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
				.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
					.addGroup(layout.createSequentialGroup()
						.addGap(70, 70, 70)
						.addComponent(Chartjbutton)
						.addGap(134, 134, 134)
						.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
							.addComponent(Exitjbutton)
							.addComponent(Clearjbutton)))
					.addGroup(layout.createSequentialGroup()
						.addGap(18, 18, 18)
						.addComponent(pie, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
				.addContainerGap())
		);

		pack();

		}
}												

	/**
	 * @param args the command line arguments
	 */
	public static void main(String args[]) {
		java.awt.EventQueue.invokeLater(new Runnable() {

			public void run() {
				new MortgageCalculatorUI().setVisible(true);
			}
		});
	}

	// Variables declaration - do not modify
	private javax.swing.JTextField Amountjtextfield;
	private javax.swing.JButton Calculatejbutton;
	private javax.swing.JButton Chartjbutton;
	private javax.swing.JButton Clearjbutton;
	private javax.swing.JButton Exitjbutton;
	private javax.swing.JLabel MenujLabel;
	private javax.swing.JList MenujList;
	private javax.swing.JPanel Menujpanel;
	private javax.swing.JLabel MortgagejLabel;
	private javax.swing.JLabel Paymentjlabel;
	private javax.swing.JTextField Paymentjtextfield;
	private javax.swing.JTextArea Schedualjtextarea;
	private javax.swing.JLabel TitlejLabel;
	private javax.swing.JScrollPane jScrollPane1;
	private javax.swing.JScrollPane jScrollPane2;
	private javax.swing.JPanel pie;
	// End of variables declaration
}



Is This A Good Question/Topic? 0
  • +

Replies To: GUI Chart problem

#2 pbl  Icon User is offline

  • There is nothing you can't do with a JTable
  • member icon

Reputation: 8346
  • View blog
  • Posts: 31,908
  • Joined: 06-March 08

Re: GUI Chart problem

Posted 30 June 2009 - 10:15 PM

Where are
BalPrincipal and CurInterest used in class Simple
defined ?
They are local variables only known inside CalculatejbuttonActionPerformed

This post has been edited by pbl: 30 June 2009 - 10:17 PM

Was This Post Helpful? 0
  • +
  • -

#3 smallfox  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 5
  • Joined: 02-May 09

Re: GUI Chart problem

Posted 30 June 2009 - 10:49 PM

Thanks for your reply!!
I see what you are saying, how to I define them?? Or get them to talk to each other?? I tried to take it out of the class but get even more errors.

Please advise
Was This Post Helpful? 0
  • +
  • -

Page 1 of 1