Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
Solved

# Calling a graphing method

Posted on 2006-11-26
Medium Priority
280 Views
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);
}

}
}

0
Question by:lusius188
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
1 Comment

LVL 10

Accepted Solution

ID: 18013935
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

## Featured Post

Question has a verified solution.

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

An old method to applying the Singleton pattern in your Java code is to check if a static instance, defined in the same class that needs to be instantiated once and only once, is null and then create a new instance; otherwise, the pre-existing insta…
Java functions are among the best things for programmers to work with as Java sites can be very easy to read and prepare. Java especially simplifies many processes in the coding industry as it helps integrate many forms of technology and different d…
Viewers will learn about the different types of variables in Java and how to declare them. Decide the type of variable desired: Put the keyword corresponding to the type of variable in front of the variable name: Use the equal sign to assign a v…
This video teaches viewers about errors in exception handling.
###### Suggested Courses
Course of the Month7 days, 22 hours left to enroll