Java 为什么我的applet';s的绘制方法抛出ConcurrentModificationException
这是我的小程序类:Java 为什么我的applet';s的绘制方法抛出ConcurrentModificationException,java,concurrency,applet,awt,Java,Concurrency,Applet,Awt,这是我的小程序类: package DavidPackages.Prototypes.Samples.BubblesV2SSCCE; import java.applet.Applet; import java.awt.*; import java.awt.geom.Ellipse2D; import java.util.ArrayList; import java.util.Random; public class BubbleAppletV2SSCCE extends Applet im
package DavidPackages.Prototypes.Samples.BubblesV2SSCCE;
import java.applet.Applet;
import java.awt.*;
import java.awt.geom.Ellipse2D;
import java.util.ArrayList;
import java.util.Random;
public class BubbleAppletV2SSCCE extends Applet implements Runnable{
private Thread thread;
private ArrayList<Ellipse2D> circles;
public void init(){
//Initialize bubbles with one entry so that we have a bubble to start out with
Random r = new Random();
circles = new ArrayList<Ellipse2D>();
circles.add(new Ellipse2D.Float(5, 5, 15, 15));
thread = new Thread(this);
thread.start();
}
public void run(){
while(true){
update();
repaint();
try{
Thread.sleep(10);
}catch(InterruptedException ie){
ie.printStackTrace();
}
}
}
private void update(){
circles.add(new Ellipse2D.Float(5, 5, 15, 15));
}
public void paint(Graphics graphics){
for(Ellipse2D circle : circles){
((Graphics2D) graphics).draw(circle);
}
}
public void stop(){}
}
我的代码中唯一的调用是:
at DavidPackages.Prototypes.Samples.BubblesV2SSCCE.BubbleAppletV2SSCCE.paint(BubbleAppletV2SSCCE.java:43)
这是哪一行:
for(Ellipse2D circle : circles){
更多详情:
- 我在IntelliJ IDEA 10.5.4中运行这个
- 我在运行OSX 10.5.8的Mac上运行这个
- 当气泡中有更多气泡实例时,更可能引发异常
- 当小程序的多个实例正在运行时,更可能引发异常
- 我的意图是最终创建一个在某人的机器上运行的游戏,而不是在web浏览器中运行。除了小程序之外,我应该使用什么李>
- 我应该用什么来代替AWT李>
- 删除了一长段注释掉的代码
- 更新了我的示例
- 增加了额外的问题
- 添加了比较AWT、Swing和SWT的文章中的引用
update()
(从组件
)使用不同的方法名称。5) 看起来while(true)
循环是错误的-当我看到一个SSCCE.Ah时,会看到更多细节。是的。我本想删除那一大块注释,但当我试图将所有内容都作为代码呈现时,它一定找到了自己的方法。我将在SSCCE上工作。同时:@2)因为我不知道自己在做什么,你有什么建议@3) 我要的是自由浮动的框架实际上,我用什么来做呢?Jframes?谢谢你的好评论。我总是确信有更好的东西我不知道,但我在Swing方面运气很好。AWT和Swing在游戏中并不是那么分开的;我总是从AWT开始,保持它的简单性,发现我需要很多挥杆的东西,然后把它扔进去。我总是使用JFrame。(哎呀,Swing已经开始了。)1)要更快地获得更好的帮助,请发布一个。并且省去了注释代码的大量部分。2) 为什么要在这个千年中使用AWT组件?3) 为什么在网页中使用小程序而不是自由浮动的框架?4) 不要覆盖update()
(从组件
)使用不同的方法名称。5) 看起来while(true)
循环是错误的-当我看到一个SSCCE.Ah时,会看到更多细节。是的。我本想删除那一大块注释,但当我试图将所有内容都作为代码呈现时,它一定找到了自己的方法。我将在SSCCE上工作。同时:@2)因为我不知道自己在做什么,你有什么建议@3) 我要的是自由浮动的框架实际上,我用什么来做呢?Jframes?谢谢你的帮助
for(Ellipse2D circle : circles){