首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

怎样使用线程画线?解决方法

2012-03-16 
怎样使用线程画线?要求:动态绘制圆周上网查的结果是在主程序中用paint画出来了但我想用注释掉的线程画圆周

怎样使用线程画线?
要求:动态绘制圆周
上网查的结果是在主程序中用paint画出来了
但我想用注释掉的线程画圆周中的线,不知道怎么实现。为什么自己建的线程无法再包含一个paint
[code=Java][/code]import java.awt.BorderLayout;


public class CircleDrawing extends JFrame {

private static JPanel contentPane;

/*private class Draw implements Runnable{
public void run(){
for(int i=0;i<360;i++){
try{
Thread.sleep(10);
}catch(InterruptedException e){
e.printStackTrace();
}
int startX=(int)(225+100*Math.sin(Math.PI/180*i));
int startY=(int)(130-100*Math.cos(Math.PI/180*i));
int endX=(int)(225+100*Math.sin(Math.PI/180*(i+1)));
int endY=(int)(130-100*Math.cos(Math.PI/180*(i+1)));
Graphics g=null;
g.drawLine(startX, startY, endX, endY);

}
}
}
*/
public void paint(final Graphics g)
{
for(int i=0;i<360;i++){
try{
Thread.sleep(10);
}catch(InterruptedException e){
e.printStackTrace();
}
int startX=(int)(225+100*Math.sin(Math.PI/180*i));
int startY=(int)(130-100*Math.cos(Math.PI/180*i));
int endX=(int)(225+100*Math.sin(Math.PI/180*(i+1)));
int endY=(int)(130-100*Math.cos(Math.PI/180*(i+1)));
g.drawLine(startX, startY, endX, endY);
}
 
}

/**
* Launch the application.
*/
public static void main(String[] args) {
final CircleDrawing cd=new CircleDrawing();
EventQueue.invokeLater(new Runnable() {
public void run() {
try {

cd.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
//CircleDrawing.Draw d=cd.new Draw();
//Thread thread1=new Thread(d);
//thread1.start();
}

/**
* Create the frame.
*/
public CircleDrawing() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);

}

}


[解决办法]
画最好还是在paint方法中完成。想实现动态效果,可设定类变量,paint方法中使用类变量的值就行作业。线程中重新设定类变量的值,然后使用repaint方法就会重新调用paint方法。

热点排行