2

私は2Dグラフィックスを学ぼうとしています。以下のこのコードは、いくつかのスピニングホイールを描画します。それらを更新するために、私はついにrepaint(1000)をpaintメソッドに挿入しましたが、これは必要のないときにペイントすることを知っています。

    public void paint(Graphics g) {
        Graphics2D g2 = (Graphics2D) g;

        for(int angle=0; angle<360; angle+=90){
            g2.setColor(blue);
            g2.fillArc(100,100,200,200,theta1 + angle,45);
            g2.setColor(red);
            g2.fillArc(100,100,200,200,theta1 + angle + 45,45);
        }

        for(int angle=0; angle<360; angle+=30){
            g2.setColor(green);
            g2.fillArc(250,250,250,250,angle + theta2,15);
            g2.setColor(yellow);
            g2.fillArc(250,250,250,250,angle + theta2 + 15,15);
        }

//        repaint(1000);
   }

    public static void main(String s[]) {
        JFrame f = new JFrame("ShapesDemo2D");
        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {System.exit(0);}
        });
        JApplet applet = new ShapesDemo2D();
        f.getContentPane().add("Center", applet);
        applet.init();
        f.pack();
        f.setSize(new Dimension(800,800));
        f.setVisible(true);

        while(true) {
            theta2 += 5;
            theta1 -= 2;

            f.repaint(1000);

            try {
                Thread.sleep(100);
            } catch (InterruptedException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
    }

私が本当にやりたいのは、変更を加えた後に更新してもらうことです。Mainはアプレットを作成してからpaintへの参照を持っていますが、f.repaint()は何もしていないようです。(paintでrepaint()をコメントアウトすると、更新されません)。私は何が間違っているのですか?

4

1 に答える 1

3

読み飛ばすのはあなたの利益になるでしょう

私も見ていただろう

Swingのアニメーションの原則とカスタムグラフィックをすべて示しています

于 2012-10-24T04:11:58.110 に答える