Swing JTabbedPane lanza la excepción IndexOutOfBoundsException mientras se llena

Tengo una aplicación con varios componentes. Uno de ellos es unJTabbedPane con otras cosas en ella (obviamente). Accedo a este panelsolamente a través de este captador:

public JTabbedPane getPlotTabbedPane() {
    if (plotTabs == null) {
        plotTabs = new JTabbedPane();
        plotTabs.setFocusable(false);

        plotTabs.add("Measurement", getPlotPanel());
        plotTabs.add("Time", getPlotPanel().getTimePanel());
        plotTabs.add("Data", getPlotPanel().getDataPanel());
        plotTabs.add("Statistics", getPlotPanel().getStatisticsPanel());
        plotTabs.addChangeListener(new ChangeListener() {
            @Override
            public void stateChanged(ChangeEvent e) {
                getPlotPanel().refreshRenderer();
            }
        });
    }
    return plotTabs;
}

Así que la primera vez, accedo a él (es decir, cuando aún no está creado), lo creo, todas las otras veces, solo devuelvo lo creado.JTabbedPane. Ya me dijeron que esta no es la mejor técnica (si alguien me puede decir una mejor que no estropee el código de composición del diseño, estoy muy abierto a las sugerencias).

Ahora, esto funciona perfectamente bien en, digamos, el 99% de los casos (inicio de la aplicación). En el 1% me sale un

Exception in thread "Thread-0" java.lang.ArrayIndexOutOfBoundsException: -1
    at java.util.Vector.elementAt(Vector.java:430)
    at javax.swing.JTabbedPane.getTitleAt(JTabbedPane.java:1091)
    at javax.swing.plaf.basic.BasicTabbedPaneUI$Handler.updateHtmlViews(BasicTabbedPaneUI.java:3564)
    at javax.swing.plaf.basic.BasicTabbedPaneUI$Handler.componentAdded(BasicTabbedPaneUI.java:3699)
    at java.awt.Container.processContainerEvent(Container.java:2065)
    at java.awt.Container.processEvent(Container.java:2036)
    at java.awt.Component.dispatchEventImpl(Component.java:4653)
    at java.awt.Container.dispatchEventImpl(Container.java:2097)
    at java.awt.Component.dispatchEvent(Component.java:4481)
    at java.awt.Container.addImpl(Container.java:1083)
    at javax.swing.JTabbedPane.insertTab(JTabbedPane.java:703)
    at javax.swing.JTabbedPane.addTab(JTabbedPane.java:777)
    at javax.swing.JTabbedPane.add(JTabbedPane.java:814)
    at companyname.product.gui.Tab.getPlotTabbedPane(Tab.java:386)
    at companyname.product.gui.Tab.getFullPlotPanel(Tab.java:374)
    at companyname.product.gui.Tab.initComponents(Tab.java:262)
    at companyname.product.gui.Tab.<init>(Tab.java:80)

No iré más abajo en la pila, pero esto es básicamente la creación de la GUI.Tab es una extensiónJPanel. Realmente no puedo entender cuál es el problema ni qué puedo hacer para evitarlo. Obviamente, podría simplemente ajustar la línea 386 de Tab.java en untry/catch, pero eso no resuelve el problema, solo resuelve los síntomas ...

Entonces, ¿sabes cuál es el problema, cómo puedo resolverlo o cómo debo hacer eso?

Respuestas a la pregunta(1)

Su respuesta a la pregunta