<Swing Dev> RfR: JDK-8133897, IndexOutOfBounds exception being thrown
Alexander Scherbatiy
alexandr.scherbatiy at oracle.com
Thu Aug 20 14:54:28 UTC 2015
On 8/20/2015 12:50 AM, Pete Brunet wrote:
> Please review this patch.
> http://cr.openjdk.java.net/~ptbrunet/JDK-8133897/webrev.00/
>
> The issue is that the application has a tab with a visible title but
> for some reason JTabbedPane's title field was "". This caused
> indexOfTab(title) to return -1 and then getTabBounds(parent, -1)
> raised ArrayIndexOutOfBoundsException.
>
>
> public Rectangle getBounds() {
> - return parent.getUI().getTabBounds(parent,
> - parent.indexOfTab(title));
> + int i = parent.indexOfTab(title);
> + Rectangle r;
> + // Check for no title. Even though that's a bug in the
> app we should
> + // inhibit an ArrayIndexOutOfBoundsException from
> getTabBounds.
> + if (i == -1) {
> + r = null;
> + } else {
> + r = parent.getUI().getTabBounds(parent, i);
> + }
> + return r;
> }
>
> Maybe someone more familiar with the code can see a bug related to why
> title is allowed to be "" when there is a visible title displayed in
> the tab. The bug I am working was raised during use of an app for
> which we do not have access so its source is not available.
It is possible to add icon with text so the title will be empty:
tabbedPane.addTab(null, icon, new JLabel("Content").
But even in this case indexOfTab returns the first tab with null
title: tabbedPane.indexOfTab((String)null).
Could it be that the tabbed pane title was changed between
JTabbedPane.Page class creation and getBounds() method invoking?
Thanks,
Alexandr.
>
> Thanks, Pete
More information about the swing-dev
mailing list