RFR: 8257810: Only First page are printed in JTable.scrollRectToVisible
Prasanta Sadhukhan
psadhukhan at openjdk.java.net
Thu Apr 7 09:45:08 UTC 2022
Issue was when printing a JTable which sits inside a JScrollPane and the table is scrolled down to the end to about 1000th row, only the first page is printed.
This is because when the table is scrolled down to last page, the bounds.y becomes -ve
[x=0,y=-15260,width=968,height=16000]
so the check `if (!((table.getBounds()).intersects(clip)))` is satisfied only for 1st page where bounds just intersects the clip [x=0,y=0,width=968,height=1296]
but subsequent pages clip
[[x=0,y=1296,width=968,height=1296],
[x=0,y=2592,width=968,height=1296],
[x=0,y=3888,width=968,height=1296] etc is not intesecting so they are not printed
This is a regression of JDK-8081491 which was **reworked** in JDK-8236907 where the bounds calculation and usage is made same as in BasicTableUI
We need to use the same resetted bounds for this intersection calculation too as was done for JDK-8236907
Tested against JDK-8081491, 8170349, JDK-8236907 testcases along with other regression tests and all are OK (link in JBS)
-------------
Commit messages:
- Fix
- Fix
- 8257810: Only First page are printed in JTable.scrollRectToVisible
Changes: https://git.openjdk.java.net/jdk/pull/8141/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=8141&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8257810
Stats: 189 lines in 2 files changed: 186 ins; 2 del; 1 mod
Patch: https://git.openjdk.java.net/jdk/pull/8141.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/8141/head:pull/8141
PR: https://git.openjdk.java.net/jdk/pull/8141
More information about the client-libs-dev
mailing list