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 メンケンかもしれませんが、「すべての複雑な問題には、明確で単純な、間違った解決策がある」というようなものです。

于 2013-04-13T02:38:57.223 に答える