如何在添加控件时停止绘制?

how to stop paint while adding controls?

有时我在清除控件并将控件重新添加到容器时遇到此异常

我认为它与绘制问题有关,有没有一种方法可以在我完成添加控件之前停止绘制事件

03-10 14:00:36.435: W/System.err(13405):    at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
03-10 14:00:36.435: W/System.err(13405):    at java.util.ArrayList.get(ArrayList.java:308)
03-10 14:00:36.435: W/System.err(13405):    at com.codename1.m.i.a(Container.java:1312)
03-10 14:00:36.435: W/System.err(13405):    at com.codename1.m.h.b(Component.java:1308)
03-10 14:00:36.435: W/System.err(13405):    at com.codename1.m.h.d(Component.java:1282)
03-10 14:00:36.435: W/System.err(13405):    at com.codename1.m.h.a(Component.java:1257)
03-10 14:00:36.435: W/System.err(13405):    at com.codename1.m.i.a(Container.java:1313)
03-10 14:00:36.435: W/System.err(13405):    at com.codename1.m.h.b(Component.java:1302)
03-10 14:00:36.435: W/System.err(13405):    at com.codename1.m.h.d(Component.java:1282)
03-10 14:00:36.435: W/System.err(13405):    at com.codename1.m.h.a(Component.java:1257)
03-10 14:00:36.435: W/System.err(13405):    at com.codename1.m.i.a(Container.java:1313)
03-10 14:00:36.445: W/System.err(13405):    at com.codename1.m.h.b(Component.java:1308)
03-10 14:00:36.445: W/System.err(13405):    at com.codename1.m.h.d(Component.java:1282)
03-10 14:00:36.445: W/System.err(13405):    at com.codename1.m.h.a(Component.java:1257)
03-10 14:00:36.445: W/System.err(13405):    at com.codename1.m.i.a(Container.java:1313)
03-10 14:00:36.445: W/System.err(13405):    at com.codename1.m.h.b(Component.java:1308)
03-10 14:00:36.445: W/System.err(13405):    at com.codename1.m.h.d(Component.java:1282)
03-10 14:00:36.445: W/System.err(13405):    at com.codename1.m.h.a(Component.java:1257)
03-10 14:00:36.445: W/System.err(13405):    at com.codename1.m.i.a(Container.java:1313)
03-10 14:00:36.445: W/System.err(13405):    at com.codename1.m.p.a(Form.java:3099)
03-10 14:00:36.445: W/System.err(13405):    at com.codename1.m.h.b(Component.java:1308)
03-10 14:00:36.445: W/System.err(13405):    at com.codename1.m.p.b(Form.java:3109)
03-10 14:00:36.445: W/System.err(13405):    at com.codename1.m.h.d(Component.java:1282)
03-10 14:00:36.445: W/System.err(13405):    at com.codename1.m.h.a(Component.java:1257)
03-10 14:00:36.445: W/System.err(13405):    at com.codename1.m.h.d(Component.java:1225)
03-10 14:00:36.455: W/System.err(13405):    at com.codename1.m.h.c(Component.java:1510)
03-10 14:00:36.455: W/System.err(13405):    at com.codename1.m.h.i(Component.java:1457)
03-10 14:00:36.455: W/System.err(13405):    at com.codename1.impl.a.p(CodenameOneImplementation.java:516)
03-10 14:00:36.455: W/System.err(13405):    at com.codename1.m.l.j(Display.java:1071)
03-10 14:00:36.455: W/System.err(13405):    at com.codename1.m.l.i(Display.java:993)
03-10 14:00:36.455: W/System.err(13405):    at com.codename1.m.ab.run(RunnableWrapper.java:120)
03-10 14:00:36.455: W/System.err(13405):    at com.codename1.impl.b.run(CodenameOneThread.java:60)
03-10 14:00:36.455: W/System.err(13405):    at java.lang.Thread.run(Thread.java:841)

您绝不能在非事件派发线程 (EDT) 的线程中更改 UI。

绘画发生在 EDT 以及所有其他事件上,因此停止它不是问题。在这种情况下不需要同步或做任何复杂的事情。

您可以使用 EDT 违规检测工具来查找代码中的错误。参见:https://www.codenameone.com/manual/edt.html