Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

JTabbedPane und stateChanged

3 views
Skip to first unread message

Sven

unread,
Sep 17, 2002, 12:04:11 PM9/17/02
to
Hallo,

ich will bei einem Wechsel zwischen Tabs, zwei Tabs aus dem
JTabbedPane entfernen (Insgesamt 5 Tabs vor dem Entfernen). Ich habe
wie folgt meinen ChangeListener geschrieben und an dem JTabbedPane
registriert.

public class TreeRegisterPanel extends JTabbedPane{

.
.
.
private TreeRegisterPanel () {

this.addChangeListener(new ChangeListener() {

public void stateChanged(ChangeEvent e) {
remove(indexOfTab("Standard1"));
remove(indexOfTab("Standard2"));

/**
* Bis hierhin läuft alles Fehlerfrei, erst danach
* kommt die Exception.
* Aber danach sind doch nur noch die Javaklassen
* am Arbeiten und nicht mehr mein Quellcode ?!?!?
*/

}

});

.
.
.
.
}


Wenn ich dies jedoch ausführe bringt er mir folgende Exception:

Exception occurred during event dispatching:
java.lang.ArrayIndexOutOfBoundsException: 1 >= 1
at java.util.Vector.elementAt(Vector.java:417)
at javax.swing.JTabbedPane.setSelectedIndex(JTabbedPane.java:352)
at javax.swing.plaf.basic.BasicTabbedPaneUI$MouseHandler.mousePressed(BasicTabbedPaneUI.java:1822)
at java.awt.Component.processMouseEvent(Component.java:3714)
at java.awt.Component.processEvent(Component.java:3546)
at java.awt.Container.processEvent(Container.java:1167)
at java.awt.Component.dispatchEventImpl(Component.java:2595)
at java.awt.Container.dispatchEventImpl(Container.java:1216)
at java.awt.Component.dispatchEvent(Component.java:2499)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2458)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2217)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2132)
at java.awt.Container.dispatchEventImpl(Container.java:1203)
at java.awt.Window.dispatchEventImpl(Window.java:918)
at java.awt.Component.dispatchEvent(Component.java:2499)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:336)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:134)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:96)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:88)

Für mich sieht es so aus, als erwartet er immernoch die Tabs die ich
entfernt habe.

Gibt es vielleicht eine Möglichkeit die Register nur zu verstecken
statt zu entfernen?

Kann mir jemand helfen? ... ich bin mit meinen Ideen leider am Ende.

Danke
Sven Engel

Daniel Cloutier

unread,
Sep 18, 2002, 7:17:22 AM9/18/02
to

"Sven" <sv...@gmx.de> schrieb im Newsbeitrag
news:186ae42a.02091...@posting.google.com...


> Hallo,
>
> ich will bei einem Wechsel zwischen Tabs, zwei Tabs aus dem
> JTabbedPane entfernen (Insgesamt 5 Tabs vor dem Entfernen). Ich habe
> wie folgt meinen ChangeListener geschrieben und an dem JTabbedPane
> registriert.
>
> public class TreeRegisterPanel extends JTabbedPane{
>
> .
> .
> .
> private TreeRegisterPanel () {
>
> this.addChangeListener(new ChangeListener() {
>
> public void stateChanged(ChangeEvent e) {
> remove(indexOfTab("Standard1"));
> remove(indexOfTab("Standard2"));
>
> /**
> * Bis hierhin läuft alles Fehlerfrei, erst danach
> * kommt die Exception.
> * Aber danach sind doch nur noch die Javaklassen
> * am Arbeiten und nicht mehr mein Quellcode ?!?!?
> */
>
> }
>
> });
>

[...]

>
>
Exception occurred during event dispatching:
java.lang.ArrayIndexOutOfBoundsException: 1 >= 1
at java.util.Vector.elementAt(Vector.java:417)
at javax.swing.JTabbedPane.setSelectedIndex(JTabbedPane.java:352)
at
javax.swing.plaf.basic.BasicTabbedPaneUI$MouseHandler.mousePressed(BasicTabb
edPaneUI.java:1822)
at java.awt.Component.processMouseEvent(Component.java:3714)
at java.awt.Component.processEvent(Component.java:3546)
at java.awt.Container.processEvent(Container.java:1167)
at java.awt.Component.dispatchEventImpl(Component.java:2595)
at java.awt.Container.dispatchEventImpl(Container.java:1216)

[...]

Schaut für mich so aus, als würdest du den Tab löschen, der im Anschluss
angesprungen wird... 3te Zeile im Stack Trace.

gruß
daniel


0 new messages