import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.Timer; import static javax.swing.SwingUtilities.invokeLater; import static javax.swing.WindowConstants.EXIT_ON_CLOSE; public class Test8025662 { private static long START = System.currentTimeMillis(); public static void main(String[] args) { invokeLater(new Runnable() { @Override public void run() { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); frame.setLayout(new GridLayout(10, 10)); for (int i = 0; i < 100; i++) { final JComponent component = new JComponent() { @Override protected void paintComponent(Graphics g) { g.setColor(getBackground()); g.fillRect(0, 0, getWidth(), getHeight()); } }; component.setPreferredSize(new Dimension(20, 20)); frame.add(component); Timer timer = new Timer(16, new ActionListener() { @Override public void actionPerformed(ActionEvent event) { long current = System.currentTimeMillis(); int red = (int) (current - START) % 255; component.setBackground(new Color(red, 255 - red, 0)); } }); timer.setInitialDelay(1000); timer.start(); } frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } }