[英]Creating an animated 4x4 grid in Java
我需要在Java中创建一个4 x 4的矩形网格,然后需要这些矩形来按顺序更改颜色。
我以前从未做过任何图形工作,只是控制台中的事情。
我从做一些研究开始,创建了一个650 x 650的JFrame
来放置矩形。此后,我使用GridLayout
并设法使用window.JButton
在按钮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即可更改动画中的颜色。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.