Ali Sayed
Ali Sayed

Reputation: 53

how to stop paint while adding controls?

sometimes i get this exception when clearing and re-adding controls to a container

I think it related to paint issue ,is there a way I can stop drawing events till I finish 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$1.run(CodenameOneThread.java:60)
03-10 14:00:36.455: W/System.err(13405):    at java.lang.Thread.run(Thread.java:841)

Upvotes: 1

Views: 20

Answers (1)

Shai Almog
Shai Almog

Reputation: 52770

You must never change the UI in a thread that isn't the event dispatch thread (EDT).

Paint happens on the EDT as well as all the other events so stopping it isn't an issue. There is no need to synchronize or do anything elaborate in such a case.

You can use the EDT violation detection tool to find mistakes in the code. See: https://www.codenameone.com/manual/edt.html

Upvotes: 1

Related Questions