1

我一直在阅读 Java 图形,所有指南似乎都指向更复杂的图形在 Java 中的实现;阅读了一些关于 repaint() 的内容,我想出了这部分代码,这似乎适用于我测试过的那一点 -

import javax.swing.*;
import java.awt.*;

public class Boids extends JFrame{

     public Boids(){
        setSize(400,400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);   
     }

     public static void main(String[] a){
        Boids boids = new Boids();
        while(true) {
            boids.repaint();
        }
     }

     public void paint(Graphics g){
        // The code for Boids
     }
}

我的问题是;这段代码在某种程度上是坏的吗?它会在路上伤害我吗?如果没有,为什么不使用它,因为它看起来比我见过的其他版本的代码更简单、更短。

4

1 回答 1

5
  • 您的评论表明您可能在该paint(...)方法中有程序逻辑,这是永远不应该做的事情,因为您无法完全控制何时或是否会调用它。
  • 您编写的代码对动画循环没有时间控制。
  • 您的代码可能会违反 Swing 线程规则。
  • 您是直接在 JFrame 中绘图,这也应该尽量避免,因为这有可能会混淆 JFrame 的许多职责。而是在 JComponent 或 JPanel 的 paintComponent 方法中绘制。

我不记得这是谁说的,也许是 HL Menken,但它有点像,“对于每一个复杂的问题,都有一个清晰、简单和错误的解决方案。”

于 2013-04-13T02:38:57.223 回答