java - 如何从 Main 刷新 JApplet?

标签 java swing paint graphics2d japplet

我正在尝试学习 2D 图形。下面的代码绘制了几个旋转的轮子。为了让它们刷新,我最终在paint方法中插入了repaint(1000),但我知道这有时会在不需要的时候进行绘制。

    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(),它不会更新)。我做错了什么?

最佳答案

关于java - 如何从 Main 刷新 JApplet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13042778/

相关文章:

java - 如何让父类返回类型 T?

java - 使用值删除 Swing 中的复选框

java - 2个类之间有什么关系?

java - java可以用作网站的服务器端语言吗?

java - 截断 double 或向小数点添加额外的 0 - Java

java - JLabel 鼠标点击图标或文本

java - GUI 应用程序并测量运行时间

windows - Win32 : Does a window have the same HDC for its entire lifetime?

dart - 如何使用 flutter 制作水彩笔

iphone - 如何在触摸时获得像素颜色?