-
Bug
-
Resolution: Fixed
-
P3
-
5.0
-
b14
-
x86
-
windows_xp
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-2119959 | 5.0u3 | Daniel Raskin | P3 | Resolved | Fixed | b03 |
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)
======================================================================
- backported by
-
JDK-2119959 REGRESSION: ArrayIndexOutOfBoundsException in BasicTabbedPaneUI.getTabBounds()
-
- Resolved
-