augussmile 2016-05-11 17:20 采纳率: 7.7%
浏览 1187

java 多线程问题,新手求教!!!!!!

public class LinesRectsOvalsJPanel extends JPanel implements Runnable
{
private final int sleeptime=5;
private int x=400;
private int y=0;
private double xspeed=1.0,yspeed=1.0;
public LinesRectsOvalsJPanel(int x,int y,double xspeed,double yspeed){
this.x=x;
this.y=y;
this.xspeed=xspeed;
this.yspeed=yspeed;
}
public int getx(){
return x;
}
public int gety(){
return y;
}
public void setballxy(int x,int y){
this.x=x;
this.y=y;
}
public void paint( Graphics g)
{
super.paint(g);
this.setBackground( Color.WHITE );
g.setColor( Color.MAGENTA );
g.fillOval( this.getx(),this.gety(),20, 20);
} // end method paintComponent
public void run()
{

   while(true)
   {
     if(x + xspeed + 2*20 > 800 || x + xspeed < 0){         //当在X轴上碰到墙时,X轴行进方向改变
               xspeed*=-1;
    }else{
               x += xspeed;                 //没碰壁时继续前进
    }
    if(y + yspeed + 2*20 > 800 || y + yspeed < 0){         //当在Y轴上碰到墙时,Y轴行进方向改变
              yspeed*=-1;
    }else{
              y += yspeed;
    }
    this.repaint();
      try{       
             Thread.sleep(sleeptime); 
         }catch(InterruptedException e){
             e.printStackTrace();
         }
   }

}
} // end class LinesRectsOvalsJPanel
public class LinesRectsOvals
{
// execute application
public static void main( String[] args )
{

  // create frame for LinesRectsOvalsJPanel
  JFrame frame = 
     new JFrame( "Drawing lines, rectangles and ovals" );
  frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
  LinesRectsOvalsJPanel linesRectsOvalsJPanel = 
     new LinesRectsOvalsJPanel(400,0,1.0,1.0); 
 LinesRectsOvalsJPanel linesRectsOvalsJPane2 = 
             new LinesRectsOvalsJPanel(700,0,1.0,1.0); 
  linesRectsOvalsJPanel.setBackground( Color.WHITE ); 
  linesRectsOvalsJPane2.setBackground( Color.WHITE );
  ExecutorService threadExecutor=Executors.newCachedThreadPool();

  frame.add( linesRectsOvalsJPanel ); // add panel to frame
  frame.add( linesRectsOvalsJPane2 );
  frame.setSize( 800, 800 ); // set frame size
  frame.setVisible( true ); // display frame
  threadExecutor.execute(linesRectsOvalsJPane2);
  threadExecutor.execute(linesRectsOvalsJPanel);

//  linesRectsOvalsJPane2.ballmove();

} // end main
} // end class LinesRectsOvals
程序中明明初始化了两个弹球,为什么最后运行的时候还是一个。。。新手,不懂。。。

  • 写回答

3条回答 默认 最新

  • augussmile 2016-05-11 17:23
    关注

    图片说明
    运行界面是这样。。。。。

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器