I am currently working on this graph "thingy" were I am told to produce 4 types of graphs.
- y=x2
- y=x3
- y=x*sin(x)
- y=x*cos(10*x)
Now basically, I have the GUI/Interface ready. I seem to have a problem linking the y=x*sin(x) button in the PlottingWindow class to the PlottingPanel where it is supposed to produce the line etc.
In short once the sine button is pressed the graph is supposed to be produced.
This is what I have till now.
I would appreciate if someone could guide me. Thanks!
Plotting Panel -
import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.event.*;
import java.awt.font.FontRenderContext;
import java.awt.font.LineMetrics;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.File;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.HeadlessException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class PlottingPanel extends JPanel
{
private static final int PAD = 0;
private static final int h = 0;
private static final float w = 0;
//number of points to draw, the more the accurate
int noOfPoints = 100000;;
public void paint(Graphics gr)
{
//get graphics object
Graphics2D g = (Graphics2D)gr;
//our axis length is going to be from -200 to 200
//convert to coordinate system
g.scale(1.0,-1.0);
g.translate(425,-425);
//draw axes
//draw y axis
g.drawLine(0, -425, 0, 425);
g.drawLine(-425, 0, 425, 0);
}
}
Plotting Window -
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class PlottingWindow extends JFrame implements ActionListener{
JButton addButton = new JButton("y = x2");
JButton x3Button = new JButton("y = x3");
JButton sinButton = new JButton("y = x*sin(x)");
JButton cosButton = new JButton("y = x*cos(10*x)");
JButton saveButton = new JButton("Save");
JButton exitButton = new JButton("Exit");
public PlottingWindow()
{
super("Plotting Panel Assignment");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Panel that holds the buttons
JPanel panel2 = new JPanel();
panel2.setLayout(new BoxLayout(panel2, BoxLayout.Y_AXIS));
panel2.setLayout(new BorderLayout());
panel2.setLayout(new GridLayout(6,0));
panel2.add(addButton);
panel2.add(Box.createRigidArea(new Dimension(20, 20)));
panel2.add(x3Button);
panel2.add(Box.createRigidArea(new Dimension(20, 20)));
panel2.add(sinButton);
panel2.add(Box.createRigidArea(new Dimension(20, 20)));
panel2.add(cosButton);
panel2.add(Box.createRigidArea(new Dimension(20, 20)));
panel2.add(saveButton);
panel2.add(Box.createRigidArea(new Dimension(20, 20)));
exitButton.addActionListener(this);
panel2.add(exitButton);
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout(10, 10));
panel.add(panel2, "West");
PlottingPanel plottingPanel = new PlottingPanel();
panel.add(plottingPanel, "Center");
setContentPane(panel);
setVisible(true);}
public void actionPerformed(ActionEvent event) {
if (event.getSource() == exitButton) {
System.exit(0);}
}
}