マウスをクリックすると表示される配列に含まれる8つの形状があるプログラムを実行しています。私は Java を初めて使用し、イベント ハンドラーとリスナーに精通していません。
フレーム内でマウスをクリックした場所に形状を表示しようとしていますが、各形状のコンストラクターがパラメーターとして 2 ポイントを使用するため、問題が発生しています。
コードの例を次に示します。
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);
}
});
}
}