Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-5075526

REGRESSION: ArrayIndexOutOfBoundsException in BasicTabbedPaneUI.getTabBounds()

    • b14
    • x86
    • windows_xp



        Name: jl125535 Date: 07/19/2004


        FULL PRODUCT VERSION :
        java version "1.5.0-beta3"
        Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-beta3-b57)
        Java HotSpot(TM) Client VM (build 1.5.0-beta3-b57, mixed mode, sharing)

        ADDITIONAL OS VERSION INFORMATION :
        Microsoft Windows XP [Version 5.1.2600]

        EXTRA RELEVANT SYSTEM CONFIGURATION :
        This bug only occurs when using the windows XP look and feel.

        A DESCRIPTION OF THE PROBLEM :
        With java 1.5.0 when a tab in a JTabbedPane is closed, _while the mouse is over that tab_, a NullPointerException is thrown. This is a regression from java 1.4.2.

        STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
        Run the program, below, on windows with the windows XP look and feel (not windows classic).


        EXPECTED VERSUS ACTUAL BEHAVIOR :
        EXPECTED -
        No exception should be thrown.
        ACTUAL -
        An exception is thrown, see below.

        ERROR MESSAGES/STACK TRACES THAT OCCUR :
        The full traceback is:

        Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException:
         1
                at javax.swing.plaf.basic.BasicTabbedPaneUI.getTabBounds(BasicTabbedPaneUI.java:1313)
                at javax.swing.plaf.basic.BasicTabbedPaneUI.getTabBounds(BasicTabbedPaneUI.java:1248)
                at com.sun.java.swing.plaf.windows.WindowsTabbedPaneUI.setRolloverTab(WindowsTabbedPaneUI.java:82)
                at javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.layoutContainer(BasicTabbedPaneUI.java:2149)
                at java.awt.Container.layout(Container.java:1401)
                at java.awt.Container.doLayout(Container.java:1390)
                at java.awt.Container.validateTree(Container.java:1473)
                at java.awt.Container.validateTree(Container.java:1480)
                at java.awt.Container.validateTree(Container.java:1480)
                at java.awt.Container.validate(Container.java:1448)
                at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:379)
                at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:113)
                at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
                at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
                at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
                at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
                at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
                at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
                at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)



        REPRODUCIBILITY :
        This bug can be reproduced always.

        ---------- BEGIN SOURCE ----------

        import java.awt.*;
        import javax.swing.*;

        public class BugReport
        {
           public static void main(String[] args) throws Exception
           {
              UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

              final JTabbedPane tabs = new JTabbedPane();
              tabs.addTab("Tab 1",new JPanel());
              tabs.addTab("Tab 2",new JPanel());
              JFrame frame = new JFrame("Bug Report");
              frame.setContentPane(tabs);
              frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
              frame.pack();
              frame.show();
              
              Thread.sleep(2000);
              
              Rectangle d = tabs.getBoundsAt(1);
              Point p = new Point(d.x+d.width/2,d.y+d.height/2);
              SwingUtilities.convertPointToScreen(p,tabs);
              Robot robot = new Robot();
              robot.mouseMove(p.x,p.y);
              
              Thread.sleep(2000);
              
              Runnable run = new Runnable()
              {
                 public void run()
                 {
                    tabs.removeTabAt(1);
                    tabs.revalidate();
                    tabs.repaint();
                 }
              };
              SwingUtilities.invokeAndWait(run);
           }
        }

        ---------- END SOURCE ----------

        Release Regression From : 1.4.2
        The above release value was the last known release where this
        bug was known to work. Since then there has been a regression.

        (Incident Review ID: 286223)
        ======================================================================

              draskinsunw Daniel Raskin (Inactive)
              jleesunw Jon Lee (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: