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();
}
}