当前位置: 代码迷 >> Eclipse >> 怎样使用线程画线?解决方法
  详细解决方案

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

热度:41   发布时间:2016-04-23 13:52:14.0
怎样使用线程画线?
要求:动态绘制圆周
上网查的结果是在主程序中用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方法。
  相关解决方案