-
Bug
-
Resolution: Fixed
-
P2
-
1.4.0
-
beta
-
sparc
-
generic
-
Verified
When I tried adding a JTabbedPane component to a JFrame, got ArrayIndexOutOfBoundsException
The code I used:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FrameDemo extends JFrame implements FocusListener {
public FrameDemo() {
setSize(300, 300);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
//adding JTabbedPane
JTabbedPane tabPane = new JTabbedPane();
tabPane.addFocusListener(this);
getContentPane().add(tabPane, BorderLayout.CENTER);
}
public static void main(String s[]) {
FrameDemo fd = new FrameDemo();
fd.pack();
fd.setVisible(true);
}
public void focusGained(FocusEvent e) {
System.out.println(e.getComponent());
}
public void focusLost(FocusEvent e) {
System.out.println(e.getComponent());
}
}
Exception in the console:
Exception occurred during event dispatching:
java.lang.ArrayIndexOutOfBoundsException
at javax.swing.plaf.basic.BasicTabbedPaneUI.getTabBounds(BasicTabbedPaneUI.java:1178)
at javax.swing.plaf.metal.MetalTabbedPaneUI.paintContentBorderTopEdge(MetalTabbedPaneUI.java:768)
at javax.swing.plaf.basic.BasicTabbedPaneUI.paintContentBorder(BasicTabbedPaneUI.java:980)
at javax.swing.plaf.basic.BasicTabbedPaneUI.paint(BasicTabbedPaneUI.java:477)
at javax.swing.plaf.metal.MetalTabbedPaneUI.paint(MetalTabbedPaneUI.java:667)
at javax.swing.plaf.metal.MetalTabbedPaneUI.update(MetalTabbedPaneUI.java:562)
at javax.swing.JComponent.paintComponent(JComponent.java:430)
at javax.swing.JComponent.paint(JComponent.java:689)
at javax.swing.JComponent.paintChildren(JComponent.java:536)
at javax.swing.JComponent.paint(JComponent.java:698)
at javax.swing.JComponent.paintChildren(JComponent.java:536)
at javax.swing.JComponent.paint(JComponent.java:698)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:548)
at javax.swing.JComponent.paintChildren(JComponent.java:536)
at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4240)
at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4186)
at javax.swing.JComponent.paint(JComponent.java:679)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:24)
at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:63)
at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:100)
at java.awt.Container.paint(Container.java:1036)
at javax.swing.JFrame.update(JFrame.java:339)
at sun.awt.RepaintArea.paintRect(RepaintArea.java:331)
at sun.awt.RepaintArea.paint(RepaintArea.java:321)
at sun.awt.motif.MComponentPeer.handleEvent(MComponentPeer.java:309)
at java.awt.Component.dispatchEventImpl(Component.java:2965)
at java.awt.Container.dispatchEventImpl(Container.java:1309)
at java.awt.Window.dispatchEventImpl(Window.java:1228)
at java.awt.Component.dispatchEvent(Component.java:2764)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:423)
at java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:136)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:122)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:118)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:98)
The code I used:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FrameDemo extends JFrame implements FocusListener {
public FrameDemo() {
setSize(300, 300);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
//adding JTabbedPane
JTabbedPane tabPane = new JTabbedPane();
tabPane.addFocusListener(this);
getContentPane().add(tabPane, BorderLayout.CENTER);
}
public static void main(String s[]) {
FrameDemo fd = new FrameDemo();
fd.pack();
fd.setVisible(true);
}
public void focusGained(FocusEvent e) {
System.out.println(e.getComponent());
}
public void focusLost(FocusEvent e) {
System.out.println(e.getComponent());
}
}
Exception in the console:
Exception occurred during event dispatching:
java.lang.ArrayIndexOutOfBoundsException
at javax.swing.plaf.basic.BasicTabbedPaneUI.getTabBounds(BasicTabbedPaneUI.java:1178)
at javax.swing.plaf.metal.MetalTabbedPaneUI.paintContentBorderTopEdge(MetalTabbedPaneUI.java:768)
at javax.swing.plaf.basic.BasicTabbedPaneUI.paintContentBorder(BasicTabbedPaneUI.java:980)
at javax.swing.plaf.basic.BasicTabbedPaneUI.paint(BasicTabbedPaneUI.java:477)
at javax.swing.plaf.metal.MetalTabbedPaneUI.paint(MetalTabbedPaneUI.java:667)
at javax.swing.plaf.metal.MetalTabbedPaneUI.update(MetalTabbedPaneUI.java:562)
at javax.swing.JComponent.paintComponent(JComponent.java:430)
at javax.swing.JComponent.paint(JComponent.java:689)
at javax.swing.JComponent.paintChildren(JComponent.java:536)
at javax.swing.JComponent.paint(JComponent.java:698)
at javax.swing.JComponent.paintChildren(JComponent.java:536)
at javax.swing.JComponent.paint(JComponent.java:698)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:548)
at javax.swing.JComponent.paintChildren(JComponent.java:536)
at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4240)
at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4186)
at javax.swing.JComponent.paint(JComponent.java:679)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:24)
at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:63)
at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:100)
at java.awt.Container.paint(Container.java:1036)
at javax.swing.JFrame.update(JFrame.java:339)
at sun.awt.RepaintArea.paintRect(RepaintArea.java:331)
at sun.awt.RepaintArea.paint(RepaintArea.java:321)
at sun.awt.motif.MComponentPeer.handleEvent(MComponentPeer.java:309)
at java.awt.Component.dispatchEventImpl(Component.java:2965)
at java.awt.Container.dispatchEventImpl(Container.java:1309)
at java.awt.Window.dispatchEventImpl(Window.java:1228)
at java.awt.Component.dispatchEvent(Component.java:2764)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:423)
at java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:136)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:122)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:118)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:98)