I have a JTabbedPane in a window with 2 tabs. If I close the last tab and the app loses focus, an exception is thrown:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1 (1)
1313 :BasicTabbedPaneUI.java javax.swing.plaf.basic.BasicTabbedPaneUI.getTabBounds()
1248 :BasicTabbedPaneUI.java javax.swing.plaf.basic.BasicTabbedPaneUI.getTabBounds()
3258 :BasicTabbedPaneUI.java javax.swing.plaf.basic.BasicTabbedPaneUI$Handler.focusLost()
5380 :Component.java java.awt.Component.processFocusEvent()
5244 :Component.java java.awt.Component.processEvent()
1966 :Container.java java.awt.Container.processEvent()
3955 :Component.java java.awt.Component.dispatchEventImpl()
2024 :Container.java java.awt.Container.dispatchEventImpl()
3803 :Component.java java.awt.Component.dispatchEvent()
1810 :KeyboardFocusManager.java java.awt.KeyboardFocusManager.redispatchEvent()
836 efaultKeyboardFocusManager.java java.awt.DefaultKeyboardFocusManager.typeAheadAssertions()
526 efaultKeyboardFocusManager.java java.awt.DefaultKeyboardFocusManager.dispatchEvent()
3841 :Component.java java.awt.Component.dispatchEventImpl()
2024 :Container.java java.awt.Container.dispatchEventImpl()
3803 :Component.java java.awt.Component.dispatchEvent()
463 :EventQueue.java java.awt.EventQueue.dispatchEvent()
50 :SentEvent.java java.awt.SentEvent.dispatch()
161 efaultKeyboardFocusManager.java java.awt.DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent.dispatch()
188 efaultKeyboardFocusManager.java java.awt.DefaultKeyboardFocusManager.sendMessage()
591 efaultKeyboardFocusManager.java java.awt.DefaultKeyboardFocusManager.dispatchEvent()
3841 :Component.java java.awt.Component.dispatchEventImpl()
2024 :Container.java java.awt.Container.dispatchEventImpl()
1766 :Window.java java.awt.Window.dispatchEventImpl()
3803 :Component.java java.awt.Component.dispatchEvent()
463 :EventQueue.java java.awt.EventQueue.dispatchEvent()
93 :SequencedEvent.java java.awt.SequencedEvent.dispatch()
461 :EventQueue.java java.awt.EventQueue.dispatchEvent()
234 :EventDispatchThread.java java.awt.EventDispatchThread.pumpOneEventForHierarchy()
163 :EventDispatchThread.java java.awt.EventDispatchThread.pumpEventsForHierarchy()
157 :EventDispatchThread.java java.awt.EventDispatchThread.pumpEvents()
149 :EventDispatchThread.java java.awt.EventDispatchThread.pumpEvents()
110 :EventDispatchThread.java java.awt.EventDispatchThread.run()


It's a simple little app:

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.plaf.basic.BasicTabbedPaneUI;

public class TabTest extends JFrame 
{
	
	public class MouseEventHandler implements MouseListener {
		TabsPane pane = null;
		public MouseEventHandler(TabsPane pane)
		{
			this.pane = pane;
		}
	
		public void mouseClicked(MouseEvent m0)
		{
			if(m0.getButton() == m0.BUTTON1){
			}else if(m0.getButton() == m0.BUTTON2){
			}else if(m0.getButton() == m0.BUTTON3){
				System.out.println("mouse click");
				try{
					pane.remove(pane.getSelectedComponent());
				}catch(java.lang.Exception a){
					System.err.println(a);
				}
			}
		}
	
		public void mouseEntered(MouseEvent m0)
		{
		}
	
		public void mouseExited(MouseEvent m0)
		{
		}
	
		public void mousePressed(MouseEvent m0)
		{
		}
	
		public void mouseReleased(MouseEvent m0)
		{
		}
	}
	
	
	public class TabsPane extends JTabbedPane{
		
		public TabsPane()
		{
			addMouseListener(new MouseEventHandler(this));
		}
	}
	
	
	public TabTest()
	{
		initializeMethod();
	}

	private void initializeMethod()
	{
		Container container=getContentPane();
		container.setLayout(new BorderLayout());
		TabsPane pane = new TabsPane();
		add(pane);
		
		pane.add(new TextArea("hello 1"));
		pane.add(new TextArea("hello 2"));
		
		addWindowListener(new WindowAdapter()
		{
			public void windowClosing(WindowEvent e)
			{
				dispose();
				System.exit(0);
			}
		});
	}
	
	

	public static void main(String[] sCommand)
	{
		TabTest app=new TabTest();
		app.setBounds(133,100,532,400);
		app.setTitle("TabTest");
		app.setVisible(true);
	}

}
The exception doesn't seem to have negative consequences. The app continues to run like nothing happened. I'd still like to know how to fix this.

Thanks.