请问:怎么用线程用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方法中画线时用刚才说的那个类变量做参数就行了。
不做其他处理的话,一般动态画面会有闪烁的状况,怎么解决在网上查查吧。