当前位置: 代码迷 >> J2SE >> 【40分又来了】利用线程用Graphics画能动的直线?解决方法
  详细解决方案

【40分又来了】利用线程用Graphics画能动的直线?解决方法

热度:95   发布时间:2016-04-24 02:07:36.0
【40分又来了】利用线程用Graphics画能动的直线?
请问:怎么用线程用Graphics画能动的直线?就是画根线,上动下动。我写的不能用。。。。朋友们教教我怎么做才能动吧。。。
Java code
import javax.swing.*;import java.awt.*;public class Window extends JFrame {        public Window()    {        super("螃蟹过街");        setIconImage(Toolkit.getDefaultToolkit().createImage("game/icon.png"));        setSize(700,400);        init();                setLocation((Toolkit.getDefaultToolkit().getScreenSize().width-700)/2,(Toolkit.getDefaultToolkit().getScreenSize().height-400)/2);        setVisible(true);        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    }        public void init()    {        Container rongqi=getContentPane();            }        public void paint(Graphics g)    {        Color c1=new Color(255,0,0,100);        g.setColor(c1);        g.setFont(new Font("",Font.BOLD,30));        new Load_line(g).start();        g.drawRect(200, 200, 100, 100);  //画矩形        g.fillRect(220, 220, 60, 60);    //填充矩形            }        public static void main(String[] args)    {        new Window();    }}--------------import java.awt.Graphics;public class Load_line extends Thread {    Graphics q2;    public Load_line(Graphics q1)    {        q2=q1;    }        public void run()    {        for(int i=40;i<300;i+=4)        {            q2.drawLine(20, i, 300, i);            try             {                sleep(300);            }             catch (InterruptedException e)             {                    e.printStackTrace();            }            }    }}


------解决方案--------------------
重画使用的是repaint()方法,这个在线程循环中需要调用,因为每次你修改要画的线的数据后都要重画才能看到动态的效果。所以线程也在主类中实现比较方便(extends JFrame implements Runnable)。然后你可以设定一个类变量,run方法中,循环;修改变量值;重画;等待;就OK了。paint方法中画线时用刚才说的那个类变量做参数就行了。
不做其他处理的话,一般动态画面会有闪烁的状况,怎么解决在网上查查吧。
  相关解决方案