簡體   English   中英

不能使用repaint()?

[英]Can't use repaint()?

//I want to paint a ball in a animation
//I can't seem to find a way to repaint the ball
// Any help or tips on how to use repaint here?
//

      // Ball class
     import javax.swing.*;
        import java.awt.*;
        import java.awt.event.*;
        import java.util.*;
        public class Ball implements Runnable {
        protected Point loc;
        protected int dx;
        protected int dy;
        protected Color color;
        protected boolean flag;
        private Graphics gra;
        public Ball(Point loc,int dx,int dy,Graphics st)
        {
            this.loc=loc;
            this.dx=1;
            this.dy=1;
            color=Color.blue;
            this.gra=st;
            flag=false;
        }
        public void paint(Graphics g)
        {
            g.fillOval((int)this.loc.getX(),(int)this.loc.getY(),20,20);
        }
        public void move()
        {
            this.loc.translate(this.dx,this.dy);
        }

        @Override
        public void run() {
            while(flag==false)
            {
                this.paint(gra);
                try {
                    Thread.sleep(20);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                move();
            }
        }

        }


//Myframe class
import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;
public class myframe extends JFrame {
    private Ball b;
    public myframe()
    {
        super("My Frame");
        setSize(800,600);
    }
    public void run()
    {   
        b=new Ball(new Point(100,100),10,10,getGraphics());
        b.run();
    }
}

//Main class
import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;
public class Main extends JFrame
{

    /**
     * @param args
     */
    public static void main(String[] args) {
        myframe jwin = new myframe();
        jwin.setSize(600, 600);
        jwin.setVisible(true);
        jwin.run();
    }
}

您需要重寫JComponent類的paintComponent()方法。 讓它完成繪畫並將該組件添加到GUI。

您應該嘗試使用repaint()而不是this.paint(gra) ,並將其放在線程中,還需要將組件添加到圖形界面

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM