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

问题描述

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
程序中明明初始化了两个弹球,为什么最后运行的时候还是一个。。。新手,不懂。。。

解决方案


运行界面是这样。。。。。

解决方案二:

关于Java多线程的synchronized的问题
Java 多线程面试问题
Java多线程面试问题

解决方案三:

刚刚跑了一下你的代码,好像是因为
linesRectsOvalsJPane2把linesRectsOvalsJPanel挡住了,
所以你看不到linesRectsOvalsJPanel的小球。
考虑一下JPanel是否能满足您的需求吧。

解决方案四:

可以在小球运动的时候println打印这两个小球的轨迹,这样可以看看是不是两个小球再跑,然后再确定查找问题的方向

时间: 2024-10-03 00:29:31

java 多线程问题,新手求教!!!!!!的相关文章

新手求教,关于java压缩文件的问题

问题描述 新手求教,关于java压缩文件的问题 import java.io.*;import java.util.zip.*;public class Myzip { private void zip(ZipOutputStream outFile fString base) throws Exception{ if(f.isDirectory()){ File f1[]=f.listFiles(); out.putNextEntry(new ZipEntry(base+""/&qu

测试-Java编程风格问题,新手求教

问题描述 Java编程风格问题,新手求教 package chapter5; abstract class Goods { private double unitPrice; private int account; public double getUnitPrice() { return unitPrice; } public void setUnitPrice(double unitPrice) { this.unitPrice = unitPrice; } public int getA

事件处理-新手求教大神,java事件监听问题

问题描述 新手求教大神,java事件监听问题 import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JLabel; public class EventModelDemo implements ActionListener{ JLabel tips=new

java-本人新手求教 关于Java内部类的问题 请大神看图

问题描述 本人新手求教 关于Java内部类的问题 请大神看图 解决方案 就是将 entry 这个对象 加入到 entrys这个数组中去 , 每次夹的时候 都会 count 加1 解决方案二: 这个呢也不是内部类的问题,,就是entrys数组中放入entry对象,,count++就是count先赋值再自增 解决方案三: 将实例entry赋值给entry数组.具体不知道你具体想问什么? 解决方案四: 这个不是内部类的问题,是在一个类中定义了方法,然后把entry 的值赋给entrys 数组j进行前+

多线程问题-新手求助关于Java多线程中启动线程问题

问题描述 新手求助关于Java多线程中启动线程问题 public class Example15_1 { /** * @param args */public static void main(String[] args) { // TODO Auto-generated method stub SpeakHello speakHello; SpeakNinhao speakNinhao; speakHello = new SpeakHello(); speakNinhao= new Speak

新手求教。java next()

问题描述 新手求教.java next() 各位好,有个问题请教一下.代码: public class hello{ public static void main(String[] args) { Scanner input1=new Scanner(System.in); label1: while(true){ System.out.println("请选择查询方法:a.图书信息 b.图书序号"); String choose=input1.next(); if(choose =

关于java中的输入输出流的问题,新手求教,谢谢

问题描述 关于java中的输入输出流的问题,新手求教,谢谢 import java.io.*; public class Filetest3 { public static void main(String[] args) { // TODO Auto-generated method stub File file=new File("word.txt"); try{ FileOutputStream out=new FileOutputStream(file); byte mybyt

关于java问题-新手求教大神:用java实现

问题描述 新手求教大神:用java实现 输入多对空格分开的两个数a,b,输出a+b的和,每一对数据的和占一行 解决方案 我的应该符合了 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; public class Test { public static void main(String[] args) thro

新手求教:从零开始学java,那本书好点?

问题描述 新手求教:从零开始学java,那本书好点? 解决方案 解决方案二:corejava解决方案三:先找个视频看看解决方案四:买本高教的书吧,权威解决方案五:我是看先看张孝祥,再看尚学堂(看了半截),现在看韩顺平.基础学了一年,还没完.你总不比我笨吧?解决方案六:ThinkinJava看上两遍,基本概念就会了.解决方案七:不是选书的问题任何书都是差不多的还是要自己多动手推荐java核心技术里面讲的都是基础我这里有pdf文件需要的话传给你解决方案八:不知道你有没有其他语言的基础,要是有的话,上