用Java创建动画4×4网格

我需要在Java中创建一个4 x 4的矩形网格,然后我需要这些矩形来改变序列中的颜色。

我以前从未做过任何图形工作,只是控制台中的东西。

我开始做一些研究,并创建了一个650 x 650 JFrame来放置矩形。之后我使用GridLayout并设法使用window.JButton创建一个4 x 4网格的按钮,这是不对的。

我该如何创建矩形呢? 使用带有++的循环来为动画计时是否正确?

在stackoverflow和google上搜索时,我找不到任何符合我需求的东西。 对不起,如果这是一个愚蠢的问题。 我是新手,我正在做一个正面的事情。

这是我希望它看起来像,每个矩形在一个时间间隔内改变颜色

在此处输入图像描述

从@Eng.Fouad 回答 (所以给予他信任和赞成他的答案),我做了一些修改,这个例子展示了如何使用Swing Timer ,它每秒都会从绿色变为红色。 我正在使用一个简单的JLabel进行演示,将此逻辑带入GridLayout

以下是一些屏幕截图:

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

 import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.Color; import javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingUtilities; import javax.swing.Timer; public class SimpleTimer extends JFrame { private JLabel label; private Timer timer; private int counter = 3; // the duration private int delay = 1000; // every 1 second private static final long serialVersionUID = 1L; private Color c = Color.RED; private boolean red = true; private boolean stop = false; int i = counter; public SimpleTimer() { super("Simple Timer"); setDefaultCloseOperation(EXIT_ON_CLOSE); label = new JLabel("Wait for " + counter + " sec", JLabel.CENTER); JPanel contentPane = (JPanel) getContentPane(); contentPane.add(label, BorderLayout.CENTER); contentPane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); pack(); timer = new Timer(delay, action); timer.setInitialDelay(0); timer.start(); setVisible(true); } ActionListener action = new ActionListener() { @Override public void actionPerformed(ActionEvent event) { if(i == 0) { timer.stop(); stop = true; i = counter; timer = new Timer(delay, action); timer.setInitialDelay(0); timer.start(); } else { c = red ? Color.GREEN : Color.RED; red = !red; label.setBackground(c); label.setOpaque(true); label.setText("Wait for " + i + " sec"); i--; } } }; public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new SimpleTimer(); } }); } } 

您可以使用jLabel,并为其设置背景颜色。 你是怎么做到的,你可以在这里阅读: 如何设置JLabel的背景颜色?

然后只需使用for循环和Thred.sleep来改变动画中的颜色。