-
Bug
-
Resolution: Fixed
-
P4
-
5.0
-
b53
-
x86
-
linux
FULL PRODUCT VERSION :
java version "1.4.2_03"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_03-b02)
Java HotSpot(TM) Client VM (build 1.4.2_03-b02, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Red Hat 7.3 (Linux 2.4.18-17.7.x i686 unknown)
A DESCRIPTION OF THE PROBLEM :
The javadocs state the JTabbedPane.setTitleAt(index, string) can take null as the string argument. However, when you try to start an application the following stack trace is produced:
Exception in thread "main" java.lang.NullPointerException
at sun.awt.font.FontDesignMetrics.stringWidth(FontDesignMetrics.java:281)
at javax.swing.SwingUtilities.computeStringWidth(SwingUtilities.java:713)
at javax.swing.plaf.basic.BasicTabbedPaneUI.calculateTabWidth(BasicTabbedPaneUI.java:1455)
at javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.calculateTabRects(BasicTabbedPaneUI.java:2251)
at javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.calculateLayoutInfo(BasicTabbedPaneUI.java:2179)
at javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.layoutContainer(BasicTabbedPaneUI.java:2094)
at java.awt.Container.layout(Container.java:1020)
at java.awt.Container.doLayout(Container.java:1010)
at java.awt.Container.validateTree(Container.java:1092)
at java.awt.Container.validateTree(Container.java:1099)
at java.awt.Container.validateTree(Container.java:1099)
at java.awt.Container.validateTree(Container.java:1099)
at java.awt.Container.validateTree(Container.java:1099)
at java.awt.Container.validate(Container.java:1067)
at java.awt.Window.show(Window.java:461)
at TabbedPaneBug.main(TabbedPaneBug.java:14)
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Create a tabbed pane and try to set a title to null
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The application to run as normal with no title for the tab. Even when you also specify an icon to be displayed on the tab the same error occurs.
ACTUAL -
The component does not appear and a NullPointerException is thrown.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Exception in thread "main" java.lang.NullPointerException
at sun.awt.font.FontDesignMetrics.stringWidth(FontDesignMetrics.java:281)
at javax.swing.SwingUtilities.computeStringWidth(SwingUtilities.java:713)
at javax.swing.plaf.basic.BasicTabbedPaneUI.calculateTabWidth(BasicTabbedPaneUI.java:1455)
at javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.calculateTabRects(BasicTabbedPaneUI.java:2251)
at javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.calculateLayoutInfo(BasicTabbedPaneUI.java:2179)
at javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.layoutContainer(BasicTabbedPaneUI.java:2094)
at java.awt.Container.layout(Container.java:1020)
at java.awt.Container.doLayout(Container.java:1010)
at java.awt.Container.validateTree(Container.java:1092)
at java.awt.Container.validateTree(Container.java:1099)
at java.awt.Container.validateTree(Container.java:1099)
at java.awt.Container.validateTree(Container.java:1099)
at java.awt.Container.validateTree(Container.java:1099)
at java.awt.Container.validate(Container.java:1067)
at java.awt.Window.show(Window.java:461)
at TabbedPaneBug.main(TabbedPaneBug.java:14)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import javax.swing.*;
public class TabbedPaneBug
{
public static void main(String[] args)
{
JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.add("Tab 1", new JLabel("Test label"));
tabbedPane.add("Tab 2", new JLabel("Test label 2"));
tabbedPane.setTitleAt(1, null);
JFrame frame = new JFrame();
frame.getContentPane().add(tabbedPane);
frame.show();
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Instead of setting the title to null set it to be an empty string.
java version "1.4.2_03"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_03-b02)
Java HotSpot(TM) Client VM (build 1.4.2_03-b02, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Red Hat 7.3 (Linux 2.4.18-17.7.x i686 unknown)
A DESCRIPTION OF THE PROBLEM :
The javadocs state the JTabbedPane.setTitleAt(index, string) can take null as the string argument. However, when you try to start an application the following stack trace is produced:
Exception in thread "main" java.lang.NullPointerException
at sun.awt.font.FontDesignMetrics.stringWidth(FontDesignMetrics.java:281)
at javax.swing.SwingUtilities.computeStringWidth(SwingUtilities.java:713)
at javax.swing.plaf.basic.BasicTabbedPaneUI.calculateTabWidth(BasicTabbedPaneUI.java:1455)
at javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.calculateTabRects(BasicTabbedPaneUI.java:2251)
at javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.calculateLayoutInfo(BasicTabbedPaneUI.java:2179)
at javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.layoutContainer(BasicTabbedPaneUI.java:2094)
at java.awt.Container.layout(Container.java:1020)
at java.awt.Container.doLayout(Container.java:1010)
at java.awt.Container.validateTree(Container.java:1092)
at java.awt.Container.validateTree(Container.java:1099)
at java.awt.Container.validateTree(Container.java:1099)
at java.awt.Container.validateTree(Container.java:1099)
at java.awt.Container.validateTree(Container.java:1099)
at java.awt.Container.validate(Container.java:1067)
at java.awt.Window.show(Window.java:461)
at TabbedPaneBug.main(TabbedPaneBug.java:14)
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Create a tabbed pane and try to set a title to null
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The application to run as normal with no title for the tab. Even when you also specify an icon to be displayed on the tab the same error occurs.
ACTUAL -
The component does not appear and a NullPointerException is thrown.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Exception in thread "main" java.lang.NullPointerException
at sun.awt.font.FontDesignMetrics.stringWidth(FontDesignMetrics.java:281)
at javax.swing.SwingUtilities.computeStringWidth(SwingUtilities.java:713)
at javax.swing.plaf.basic.BasicTabbedPaneUI.calculateTabWidth(BasicTabbedPaneUI.java:1455)
at javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.calculateTabRects(BasicTabbedPaneUI.java:2251)
at javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.calculateLayoutInfo(BasicTabbedPaneUI.java:2179)
at javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.layoutContainer(BasicTabbedPaneUI.java:2094)
at java.awt.Container.layout(Container.java:1020)
at java.awt.Container.doLayout(Container.java:1010)
at java.awt.Container.validateTree(Container.java:1092)
at java.awt.Container.validateTree(Container.java:1099)
at java.awt.Container.validateTree(Container.java:1099)
at java.awt.Container.validateTree(Container.java:1099)
at java.awt.Container.validateTree(Container.java:1099)
at java.awt.Container.validate(Container.java:1067)
at java.awt.Window.show(Window.java:461)
at TabbedPaneBug.main(TabbedPaneBug.java:14)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import javax.swing.*;
public class TabbedPaneBug
{
public static void main(String[] args)
{
JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.add("Tab 1", new JLabel("Test label"));
tabbedPane.add("Tab 2", new JLabel("Test label 2"));
tabbedPane.setTitleAt(1, null);
JFrame frame = new JFrame();
frame.getContentPane().add(tabbedPane);
frame.show();
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Instead of setting the title to null set it to be an empty string.