Need help with assignment - JButton
hi there, can somebody help me fix my code? so my assignment is to write a GUI application that lets users select one of the two shapes and draw the shape. The user can select either a Circle, or a Triangle. After one of the shapes is selected, the user can draw it as follow: when Circle is selected, let the user draw a circle with two mouse clicks. The first one on the center and the second on a point on the periphery of the circle. when Triangle is selected, let the user draw a triangle with three mouse clicks. so in other to choose, my instructor wants us to use JButton.
My problem is in my JustViewer class = I can't make 2 buttons small and the other button is not displayed...
so here is my code
//circle
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.geom.*;
public class CircleComponent extends JComponent
{
public CircleComponent()
{
clicks = 0;
MouseListener listener = new CircleListener();
addMouseListener(listener);
positionX = new int[2];
positionY = new int[2];
}
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
int postY = positionY[1] - positionY[0];
int postX = positionX[1] - positionX[0];
double diameter = 2 * (Math.sqrt((Math.pow(postX, 2)) - (Math.pow(postY, 2))));
Ellipse2D.Double circle = new Ellipse2D.Double(positionX[0], positionY[0], diameter, diameter);
g2.draw(circle);
}
class CircleListener implements MouseListener
{
public void mouseClicked(MouseEvent event)
{
positionX[clicks] = event.getX();
positionY[clicks] = event.getY();
clicks++;
if(clicks % 2 ==0)
{
repaint();
clicks = 0;
}
}
public void mouseReleased(MouseEvent event) {}
public void mousePressed(MouseEvent event) {}
public void mouseEntered(MouseEvent event) {}
public void mouseExited(MouseEvent event) {}
}
private int[] positionX;
private int[] positionY;
private int clicks;
}
//triangle
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.geom.*;
public class TriangleComponent extends JComponent
{
public TriangleComponent()
{
clicks = 0;
MouseListener listener = new MouseTriListener();
addMouseListener(listener);
positionX = new int[3];
positionY = new int[3];
}
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
Point2D.Double r1 = new Point2D.Double(positionX[0], positionY[0]);
Point2D.Double r2 = new Point2D.Double(positionX[1], positionY[1]);
Point2D.Double r3 = new Point2D.Double(positionX[2], positionY[2]);
Line2D.Double post1 = new Line2D.Double(r1, r2);
Line2D.Double post2 = new Line2D.Double(r2, r3);
Line2D.Double post3 = new Line2D.Double(r3, r1);
g2.draw(post1);
g2.draw(post2);
g2.draw(post3);
}
class MouseTriListener implements MouseListener
{
public void mousePressed (MouseEvent event)
{
positionX[clicks] = event.getX();
positionY[clicks] = event.getY();
clicks++;
if (clicks % 3 ==0)
{
repaint();
clicks = 0;
}
}
public void mouseReleased(MouseEvent event) {}
public void mouseClicked(MouseEvent event) {}
public void mouseEntered(MouseEvent event) {}
public void mouseExited(MouseEvent event) {}
}
private int[] positionX;
private int[] positionY;
private int clicks;
}
//the viewer
Code:
import java.awt.event.*;
import javax.swing.*;
public class JustViewer
{
public static void main(String[] args)
{
final TriangleComponent component = new TriangleComponent();
final CircleComponent component1 = new CircleComponent();
final JFrame frame = new JFrame();
JButton button = new JButton("Triangle");
JButton button1 = new JButton("cirlce");
frame.add(button);
frame.add(button1);
class TriangleListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
frame.add(component);
}
}
ActionListener listener = new TriangleListener();
button.addActionListener(listener);
class CircleListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
frame.add(component1);
}
}
ActionListener listener1 = new CircleListener();
button1.addActionListener(listener1);
frame.setSize(300, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
Thank you so much, I really appreciate it for reading