# Calling a graphing method

Assuming that i have the following code and it works to make just a basic graph show up without any graphing calculations yet....how do I call the graph from the MAIN METHOD to make it show up?

import java.util.Scanner;
import java.text.DecimalFormat;

public class Poly
{
public static void main (String[] args)
{
double c4,c3,c2,c1,c0,x,interval,xvalue;
int ptnumber,counter;
String result;

DecimalFormat fmt = new DecimalFormat ("0.##");

Scanner scan = new Scanner (System.in);

System.out.print ("Enter the coefficient of x^4(0.0 if none:");
c4 = scan.nextDouble();

System.out.print ("Enter the coefficient of x^3(0.0 if none:");
c3 = scan.nextDouble();

System.out.print ("Enter the coefficient of x^2(0.0 if none:");
c2 = scan.nextDouble();

System.out.print ("Enter the coefficient of x^1(0.0 if none:");
c1 = scan.nextDouble();

System.out.print ("Enter the constant:");
c0 = scan.nextDouble();

System.out.print ("Enter the starting value of x:");
x = scan.nextDouble();

System.out.print ("Enter the number of points to be graphed(Integer):");
ptnumber = scan.nextInt();

System.out.print ("Enter the interval between points:");
interval = scan.nextDouble();

Polynomial pn = new Polynomial(c4, c3, c2, c1, c0);

System.out.println("f(x)="+pn);

System.out.println("x     | f(x)");
System.out.println("----------");
counter = 0;
while (counter < ptnumber)
{

System.out.println(x          +"     | "+fmt.format(pn.evaluate(x)));

x = (x + interval);
counter++;
}

}
}

POLY CLASS

import javax.swing.JPanel;
import java.awt.*;
import java.text.DecimalFormat;

import java.text.DecimalFormat;
public class Polynomial
{
double coeff4, coeff3, coeff2, coeff1, constant;
String sign4,sign3,sign2,sign1,sign0;
public Polynomial(double c4, double c3, double c2, double c1, double c0)
{
coeff4 = c4;
coeff3 = c3;
coeff2 = c2;
coeff1 = c1;
constant = c0;

}

public double evaluate(double x)
{

double xsq = x*x;
return (coeff4*xsq*xsq + coeff3*xsq*x + coeff2*xsq + coeff1*x + constant);

}

public String toString()

{
String result = "";

if (coeff4 != 0)
{
result += coeff4+"x^4";
}
if (coeff3 != 0)
{
if (coeff3 > 0)
result += "+";

result += coeff3+"x^3";
}
if (coeff2 != 0)
{
if (coeff2 > 0)
result += "+";

result += coeff2+"x^2";
}
if (coeff1 != 0)
{
if (coeff1 > 0)
result += "+";

result += coeff1+"x";
}
if(constant!=0)
{
if(constant>0)
result+="+";

result += constant;
}

return result;

}

public void draw(Graphics page, int xPixels, int yPixels)
{
final int NUM = 11;
final double INTERVAL = 0.5;
final double XSTART = 0.0;

final int XMARGIN = 70;
final int XUSABLEPIXELS = xPixels - 2*XMARGIN;
final int XINTERVALPIXELS = XUSABLEPIXELS/(NUM - 1);
final int YMARGIN =40;
final int YUSABLEPIXELS = yPixels - 2*YMARGIN;

// Label the graph
page.drawString("Graph of f(x) = " + toString(), XMARGIN + 20, YMARGIN);

// Draw the x axis and put in hash marks
page.drawLine(XMARGIN, yPixels - YMARGIN, xPixels - XMARGIN, yPixels - YMARGIN);
for ( int i = 0; i < NUM; i++ )
page.drawLine(XMARGIN + i * XINTERVALPIXELS, yPixels - YMARGIN, XMARGIN + i * XINTERVALPIXELS, yPixels - YMARGIN + 5);

DecimalFormat twoPlaces = new DecimalFormat("0.00");

// Label the x axis
for (int i = 0; i < NUM; i++)
{
page.drawString( twoPlaces.format(XSTART + i * INTERVAL), 3 * XMARGIN / 4 + i * XINTERVALPIXELS, yPixels - YMARGIN/2);
}

// Draw the y axis
page.drawLine(XMARGIN, YMARGIN, XMARGIN, yPixels - YMARGIN);

// Label the y axis and put in hash marks
final double YMIN = 0.0;
final double YINTERVAL = 100.0;
final int YINTERVALPIXELS = YUSABLEPIXELS / 10;

for (int i = 0; i < NUM; i++)
{
page.drawString(twoPlaces.format(YMIN + i * YINTERVAL), XMARGIN / 4, yPixels - i * YINTERVALPIXELS - YMARGIN);
page.drawLine(XMARGIN, yPixels - YMARGIN - i * YINTERVALPIXELS, XMARGIN - 5, yPixels - YMARGIN - i * YINTERVALPIXELS);
}

}
}

###### Who is Participating?

Commented:
You have to create a class which extends from JFrame. You create an instance of this class in your main method. Next you add an extension of a JPanel with the graph drawing code to the frame and voila.

sth like:

import javax.swing.*;
class MyGraphExample extends JFrame
{
public MyGraphExample()
{
this.setTitle("My graph");
this.setSize(800,600);
this.setLayout(new BorderLayout());
}
public static void main(String[] args)
{
MyGraphExample mge = new MyGraphExample();
mge.setVisible(true);
}
}

import javax.swing.*;
class MyGraphPanel extends JPanel
{
public MyGraphPanel()
{
}

public void paintComponent(Graphics g)
{
... perform drawing here ...
}
}

Good luck.
Mark
0
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.