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

请问:怎么用线程用Graphics画能动的直线?就是画根线,上动下动。我写的不能用。。。。朋友们教教我怎么做才能动吧。。。

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();
}
}
}

}

...全文
89 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
dntg007 2011-12-29
  • 打赏
  • 举报
回复
重画使用的是repaint()方法,这个在线程循环中需要调用,因为每次你修改要画的线的数据后都要重画才能看到动态的效果。所以线程也在主类中实现比较方便(extends JFrame implements Runnable)。然后你可以设定一个类变量,run方法中,循环;修改变量值;重画;等待;就OK了。paint方法中画线时用刚才说的那个类变量做参数就行了。
不做其他处理的话,一般动态画面会有闪烁的状况,怎么解决在网上查查吧。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧