Witam. Mam takie dwie klasy:
public class UpdateDrawing {
public static void main(String [] args){
JFrame frame = new JFrame();
final Drawing drawing = new Drawing();
JButton button = new JButton("Change Color");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
drawing.drawingRepaint();
}
});
frame.setTitle("Frame");
frame.add(drawing);
frame.add(button, BorderLayout.SOUTH);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
public class Drawing extends JPanel{
public int rgb[] = {255, 0, 0};
public Drawing(){
setPreferredSize(new Dimension(140, 140));
}
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
g2d.setColor(new Color(rgb[0], rgb[1], rgb[2]));
g2d.fillOval(20, 20, 100, 100);
}
public void drawingRepaint(){
//for(int i=0;i<10;i++){
rgb[0] = (int)(Math.random()*255);
rgb[1] = (int)(Math.random()*255);
rgb[2] = (int)(Math.random()*255);
repaint();
//}
}
}
Gdy 'for' jest wykomentowany - działa. Kiedy chcę, aby po kliknięciu kolor zmienił się 10 razy - nie działa. Kolor zmienia się tylko raz. Dlaczego tak się dzieje i jak to zmienić? Potrzebuję używać repaint() w pętli, bo tworzę wizualizację procesu i chcę żeby mi się odświeżało na bieżąco.
Z góry dzięki za pomoc.