为什么不使用这种简单的Java图形实现?

Cis*_*tin 1 java graphics swing awt

我一直在阅读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
     }
}
Run Code Online (Sandbox Code Playgroud)

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

Hov*_*els 5

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

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