1
私のフォームにTabs
コンポーネントがあります。タブはナビゲーションに使用されます。 私はすべてのタブを閉じて、私はこの方法を使用するすべてのタブを閉じるにはインデックス0で新しいものを開くために必要がある場合があります:コードネームワン - すべてのタブを閉じる方法(コード経由)
void close(int from) {
int to = tabs.getTabCount() - 1;
for (int i = to; i >= from; i--) {
tabs.removeTabAt(i);
}
if (from > 0)
tabs.setSelectedIndex(from - 1);
}
void closeAll() {
close(0);
}
これは動作しますが、常にではありません。時々私は2つの例外を受け取る:
[EDT] 0:0:8,436 - Exception: java.lang.IndexOutOfBoundsException - Index: 1, Size: 0
java.lang.IndexOutOfBoundsException: Index: 1, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at com.codename1.ui.Container.getComponentAt(Container.java:1551)
at com.codename1.ui.Container.doLayout(Container.java:1520)
at com.codename1.ui.Container.layoutContainer(Container.java:1509)
at com.codename1.ui.Container.doLayout(Container.java:1522)
at com.codename1.ui.Container.layoutContainer(Container.java:1509)
at com.codename1.ui.Container.paint(Container.java:1406)
at com.codename1.ui.Component.internalPaintImpl(Component.java:1333)
at com.codename1.ui.Component.paintInternalImpl(Component.java:1307)
at com.codename1.ui.Component.paintInternal(Component.java:1282)
at com.codename1.ui.Component.paintInternal(Component.java:1250)
at com.codename1.ui.Component.paintComponent(Component.java:1535)
at com.codename1.ui.Component.paintComponent(Component.java:1482)
at com.codename1.impl.CodenameOneImplementation.paintDirty(CodenameOneImplementation.java:588)
at com.codename1.impl.javase.JavaSEPort.paintDirty(JavaSEPort.java:1279)
at com.codename1.ui.Display.edtLoopImpl(Display.java:1077)
at com.codename1.ui.Display.mainEDTLoop(Display.java:999)
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.ArrayList.elementData(ArrayList.java:418)
at java.util.ArrayList.get(ArrayList.java:431)
at com.codename1.ui.Container.getComponentAt(Container.java:1551)
at com.codename1.ui.Tabs$1.actionPerformed(Tabs.java:573)
at com.codename1.ui.util.EventDispatcher.fireActionSync(EventDispatcher.java:459)
at com.codename1.ui.util.EventDispatcher.access$100(EventDispatcher.java:45)
at com.codename1.ui.util.EventDispatcher$CallbackClass.run(EventDispatcher.java:95)
at com.codename1.ui.Display.processSerialCalls(Display.java:1154)
at com.codename1.ui.Display.edtLoopImpl(Display.java:1098)
at com.codename1.ui.Display.flushEdt(Display.java:886)
at com.codename1.ui.Form.showModal(Form.java:1762)
at com.codename1.ui.Dialog.showModal(Dialog.java:1085)
at com.codename1.ui.Dialog.show(Dialog.java:553)
at com.codename1.ui.Dialog.showPackedImpl(Dialog.java:1389)
at com.codename1.ui.Dialog.showPacked(Dialog.java:1297)
at com.codename1.ui.Dialog.showImpl(Dialog.java:1041)
at com.codename1.ui.Dialog.show(Dialog.java:1019)
at com.codename1.ui.Dialog.show(Dialog.java:975)
at com.codename1.ui.Dialog.show(Dialog.java:764)
at com.codename1.ui.Dialog.show(Dialog.java:717)
at com.codename1.ui.Dialog.show(Dialog.java:682)
at com.codename1.ui.Dialog.show(Dialog.java:623)
at com.codename1.ui.Dialog.show(Dialog.java:778)
at com.codename1.ui.Display.mainEDTLoop(Display.java:1012)
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
だからすべてのタブを閉じるための正しい方法は何ですか?
はcloseAll()
がsheduled Runnable
から呼び出された場合にのみ、
例外がスローされました。タブをスライドさせた後、タブを閉じるにはRunnable
を使用します。