Lillian and others pointed out that sometimes the JTabbedPane didn't paint correctly the last tab in a run. I found out that there was a problem in the determination of what is considered the last tab. This patch fixes the problem.
2006-04-30 Roman Kennke <[EMAIL PROTECTED]>
* javax/swing/plaf/basic/BasicTabbedPaneUI.java
(lastTabInRun): Fix calculation of the last tab in a run. This
has caused painting problems sometimes, making the
last tab painted incorrectly.
/Roman
--
“Improvement makes straight roads, but the crooked roads, without
Improvement, are roads of Genius.” - William Blake
Index: javax/swing/plaf/basic/BasicTabbedPaneUI.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/plaf/basic/BasicTabbedPaneUI.java,v
retrieving revision 1.42
diff -u -1 -0 -r1.42 BasicTabbedPaneUI.java
--- javax/swing/plaf/basic/BasicTabbedPaneUI.java 20 Apr 2006 09:56:30 -0000 1.42
+++ javax/swing/plaf/basic/BasicTabbedPaneUI.java 30 Apr 2006 09:26:29 -0000
@@ -2552,24 +2552,37 @@
/**
* This method returns the index of the last tab in a run.
*
* @param tabCount The number of tabs.
* @param run The run to check.
*
* @return The last tab in the given run.
*/
protected int lastTabInRun(int tabCount, int run)
{
- if (tabRuns[run] == 0)
- return tabCount - 1;
+ int lastTab;
+ if (runCount == 1)
+ lastTab = tabCount - 1;
else
- return tabRuns[run] - 1;
+ {
+ int nextRun;
+ if (run == runCount - 1)
+ nextRun = 0;
+ else
+ nextRun = run + 1;
+
+ if (tabRuns[nextRun] == 0)
+ lastTab = tabCount - 1;
+ else
+ lastTab = tabRuns[nextRun] - 1;
+ }
+ return lastTab;
}
/**
* This method returns the tab run overlay.
*
* @param tabPlacement The JTabbedPane's tab placement.
*
* @return The tab run overlay.
*/
protected int getTabRunOverlay(int tabPlacement)
signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil
