I just stumbled over this code in JViewport.setViewPosition():
if (view instanceof JComponent) {
JComponent c = (JComponent)view;
oldX = c.getX();
oldY = c.getY();
}
else {
Rectangle r = view.getBounds();
oldX = r.x;
oldY = r.y;
}
I think this special casing is not necessary anymore since JDK1.2.
Attached is a patch to correct this.
Cheers, Roman
--
Dipl.-Inform. (FH) Roman Kennke, Software Engineer, http://kennke.org
aicas Allerton Interworks Computer Automated Systems GmbH
Haid-und-Neu-Straße 18 * D-76131 Karlsruhe * Germany
http://www.aicas.com * Tel: +49-721-663 968-0
USt-Id: DE216375633, Handelsregister HRB 109481, AG Karlsruhe
Geschäftsführer: Dr. James J. Hunt
Index: j2se/src/share/classes/javax/swing/JViewport.java
===================================================================
--- j2se/src/share/classes/javax/swing/JViewport.java (Revision 252)
+++ j2se/src/share/classes/javax/swing/JViewport.java (Arbeitskopie)
@@ -1099,16 +1099,8 @@
* and do the song and dance to avoid allocating
* a Rectangle object if we don't have to.
*/
- if (view instanceof JComponent) {
- JComponent c = (JComponent)view;
- oldX = c.getX();
- oldY = c.getY();
- }
- else {
- Rectangle r = view.getBounds();
- oldX = r.x;
- oldY = r.y;
- }
+ oldX = view.getX();
+ oldY = view.getY();
/* The view scrolls in the opposite direction to mouse
* movement.