Prosze bardzo o pomoc Moim celem jest dodanie losowo kwadratow do planszy po czym (podczas dzialania programu) zmienianie kolorów danych kwadratów w zależności od pewnych kondyncji. Co do kondyncji - poradze sobie, ale mam wielki problem z tym, żeby MouseListener zmienił kolor dowolnego kwadratu. Wiem ze sam ML w konstruktorze jakos działa, po System.out.println działa całkiem dobrze, po prostu to odwoływanie sie do paint/repaint/update nie działa w ogóle. Bardzo prosze o pomoc :) pozostawiam niektóre komentarze, żeby było wiadomo co już próbowałam, może niektóre wam coś przypomną :)

import sun.management.jdp.JdpGenericPacket;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import java.util.concurrent.TimeUnit;

public class Kwadraty extends JPanel {
    private int n;
    private List<Rectangle> rectangles = new ArrayList<Rectangle>();
    private List<Graphics> gds = new ArrayList<Graphics>();
    public Kwadraty(int number) {

        n = number;
        Random random = new Random();
        int iter=0;
        for (int i=0;i<n;i++) {
            int x = random.nextInt(900);
            int y = random.nextInt(600);
            int side = random.nextInt(50);
            Rectangle rect = new Rectangle(x,y,side,side);

            rectangles.add(rect);
        }

        this.repaint(rct);
        this.addMouseListener(new MouseListener() {
            @Override
            public void mouseClicked(MouseEvent e) {
                System.out.println("Mouse clicked ad " + e.getX() + " " + e.getY());
                Graphics grap = getGraphics(3);
                grap.setColor(Color.BLACK);
                grap.fillRect(rct.x, rct.y, rct.height, rct.width);
                        Rectangle rct = rectangles.get(3);
               repaint(rct);
               update(grap);
                

            }

            @Override
            public void mousePressed(MouseEvent e) {

            }

            @Override
            public void mouseReleased(MouseEvent e) {

            }

            @Override
            public void mouseEntered(MouseEvent e) {

            }

            @Override
            public void mouseExited(MouseEvent e) {

            }
        });

        //repaint();
    }
    /*


     */


    public void setGraphics(Graphics g) {
        gds.add(g);
    }
    public Graphics getGraphics(int i) {
        return gds.get(i);
    }
    public void paintComponent(Graphics g) {
       // super.paintComponent(g);

        for(Rectangle r : rectangles) {
            g.setColor(Color.WHITE);
            g.fillRect((int)r.getX(),(int)r.getY(),(int)r.getWidth(), (int)r.getHeight());
            setGraphics(g);
        }
    }



    public static void main(String[] args) {
        //Frame frame = new Frame();

        Kwadraty kwadraty = new Kwadraty(9);
        kwadraty.repaint(kwadraty.rectangles.get(3));
        //kolos.update(getGraphics(3));
        JFrame frame = new JFrame("Kwadraty");
        frame.setBackground(Color.BLUE);
        //LayoutManager manager = new LayoutManager();
        // frame.setLayout(manager.preferredLayoutSize());
        frame.setSize(1700, 700);
        frame.setBackground(Color.BLUE);
        //frame.add(component);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //frame.setSize(1700,700);
        frame.setVisible(true);

        /*
        Runnable worldTask = new Runnable(){
            @Override
            public void run(){

            }
        };
        frame.add(kolos);
        */ 

 //       Thread t1 = new Thread(worldTask);
   //     t1.start();
        //kolos.changeSize();
        //frame.frameInit();
    }
}