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

时间:2013-04-13 02:36:23

标签: java swing graphics 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
     }
}

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

1 个答案:

答案 0 :(得分:5)

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

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