Я пытаюсь написать программу на Java Swing, которая выводит сетку геометрических прямоугольников размером 10 x 10, заполненную случайными цветами. Однако, когда пользователь нажимает на один из прямоугольников в окне дисплея, прямоугольник должен перекрашиваться () и меняться на другой цвет.
Пока что у меня работает рудиментарная программа, но я не могу понять, как реализовать для нее mouseListener, чтобы цвет прямоугольников менялся, когда пользователь щелкает внутри. В этот момент прямоугольники перекрашиваются только тогда, когда окно дисплея развернуто и свернуто. Любой совет / помощь будет принята с благодарностью! Спасибо!
Вот что у меня есть ...
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.geom.*;
public class ColorGrid extends JPanel {
int w, x, y, z;
Color c = new Color((int)(Math.random() * 0xFFFFFF));
public void paint(Graphics g){
Graphics2D g2 = (Graphics2D) g;
setLayout(new GridLayout(10,10));
int w = x = y = z = 0;
for(int i=0;i<100;i++){
Color c = new Color((int)(Math.random() * 0xFFFFFF));
w+=10;
x+=10;
y+=50;
z+=15;
g2.drawRect(w+10,x+30,y,z);
g2.drawRect(w+10,x+30,y,z);
g2.fillRect(w+10,x+30,y,z);
g2.setPaint(c);
}
}
public static void main(String[] args) {
JFrame f= new JFrame();
f.setTitle("ColorGrid Display Window");
f.setSize(200,200);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
Container contentPane = f.getContentPane();
contentPane.add(new ColorGrid());
f.show();
}
}