I'm doing a program in which there are 8 shapes contained in an array that will be displayed when you click the mouse. I am new to Java and not that familiar with event handlers and listeners.
I am trying to make the shapes appear at the location the mouse is clicked at inside the frame yet I am having trouble since the constructor of each shape use 2 Points as its parameter.
Here's an example from the code:
import MyLibs.Circle;
import MyLibs.Rectangle;
import MyLibs.Shape;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Random;
public class DrawInScreenOnClickTest extends javax.swing.JFrame {
private Image dbImage;
Shape[] sh = new Shape[] {
new Circle(new Point(50, 60), new Point(130, 180)),
new Rectangle(new Point(50, 200), new Point(150, 350)),
new Circle(new Point(200, 300), new Point(350, 350)),
new Rectangle(new Point(100, 100), new Point(250, 250)),
new Circle(new Point(150, 150), new Point(300, 300)),
new Circle(new Point(200, 200), new Point(450, 500)),
new Rectangle(new Point(300, 300), new Point(550, 550)),
new Circle(new Point(150, 150), new Point(320, 320))
};
Color[] colors = new Color[] {
Color.cyan, Color.green, Color.red, Color.blue, Color.magenta, Color.orange
};
Random random = new Random();
int i = 0;
Shape shape;
boolean first = true;
public DrawInScreenOnClickTest() {
initComponents();
}
private void formMouseClicked(java.awt.event.MouseEvent evt) {
repaint();
}
public class Mouse extends MouseAdapter {
@Override
public void mousePressed(MouseEvent e) {
int x = e.getX();
int y = e.getY();
}
}
public void paint(Graphics g) {
if (first == true) {
first = false;
} else {
int shapeColor = random.nextInt(6);
Shape shape = sh[i]; //calls shapes array
shape.setColor(colors[shapeColor]); //call colors array random
shape.drawShape(g); //display shape
if (i == 4) {
i = 0;
} else
i++;
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new DrawInScreenOnClickTest().setVisible(true);
}
});
}
}