当前位置: 首页 > 知识库问答 >
问题:

在Java中创建动画4x4网格

南宫俊逸
2023-03-14

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

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

我开始做一些研究,创建了一个650 x 650的JFrame来放置矩形。之后,我使用了网格布局(GridLayout),并使用窗口创建了一个4 x 4的网格。JButton这是不对的。

我将如何创建矩形?使用for循环来计时动画是否正确?

在stackoverflow和google上搜索时,我找不到任何适合我需求的东西。抱歉,如果这是一个愚蠢的问题。我是新手,我正在做一个职位。

这是我希望它看起来的样子,每个矩形在一段时间内改变颜色

共有2个答案

林丁雷
2023-03-14

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

然后只使用for loop和Thred。睡眠以更改动画中的颜色。

凌清夷
2023-03-14

来自@Eng。Fouad answer(所以也给他信任并投票支持他的答案),我做了一些更改,这个例子展示了如何使用摆动计时器,它每秒将颜色从绿色更改为红色。为了演示,我使用了一个简单的JLabel,将此逻辑带入您拥有的网格布局中:

以下是它的一些屏幕截图:

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();
            }
        });
    }
}
 类似资料:
  • 关于 Flash 图形 Flash (SWF) 文件格式是一种基于矢量的图形文件格式,它用于适合 Web 的可缩放小尺寸图形。由于这种文件格式基于矢量,因此,图稿可以在任何分辨率下保持其图像品质,并且非常适于创建动画帧。在 Illustrator 中,可以在图层上创建单独的动画帧,然后将图像图层导出到网站上使用的单独帧中。也可以在 Illustrator 文件中定义符号以减小动画的大小。在导出后,

  • 注意:对于 Photoshop CC 之前的 Photoshop 版本,只有当您拥有 Photoshop Extended 时,本文所讨论的某些功能才可能可用。Photoshop 不提供单独的 Extended 版本。Photoshop Extended 中的所有功能是 Photoshop 的一部分。 帧动画工作流程 在 Photoshop 中,使用“时间轴”面板创建动画帧。每个帧表示一个图层配置

  • 关于 Flash 图形 Flash (SWF) 文件格式是一种基于矢量的图形文件格式,它用于适合 Web 的可缩放小尺寸图形。由于这种文件格式基于矢量,因此,图稿可以在任何分辨率下保持其图像品质,并且非常适于创建动画帧。在 Illustrator 中,可以在图层上创建单独的动画帧,然后将图像图层导出到网站上使用的单独帧中。也可以在 Illustrator 文件中定义符号以减小动画的大小。在导出后,

  • 了解如何创建可滚动画板。 当您创建 XD 设计时,有时画板不够长,无法适合您的内容。通过加长画板并根据您的设计需求选择选项,您可以垂直滚动画板以适应不同的设备尺寸。 垂直滚动可帮助您在设计可滚动下拉列表或网站时模拟滚动效果,但 XD 中不支持水平滚动。  创建垂直滚动条 在预设画板上:向下拖动画板的最低点,使其长度比设备屏幕长。虚线表示可滚动内容的起始位置。  虚线和可滚动的内容 在自定义画板上:

  • 我需要在我的应用程序中有一个心跳动画,比如这个或这个。我不介意使用外部资源,只要我能控制脉搏率。在谷歌搜索了这么多之后,很多人建议使用,但我不知道该如何获得我需要的东西。 那么如果有人知道如何实现这样的事情呢?

  • 从 2D 图像创建 3D 对象 Photoshop 可以将 2D 图层作为起始点,生成各种基本的 3D 对象。创建 3D 对象后,可以在 3D 空间移动它、更改渲染设置、添加光源或将其与其它 3D 图层合并。 将 2D 图层转换到 3D 明信片中(具有 3D 属性的平面)。如果起始图层是文本图层,则会保留所有透明度。 使用 2D 图层包围 3D 对象,如锥形、立方体或圆柱体。 通过 2D 图像中的