On 11/30/2016 2:53 PM, Prasanta Sadhukhan wrote:
Hi All,
Bug: https://bugs.openjdk.java.net/browse/JDK-8170349
webrev: http://cr.openjdk.java.net/~psadhukhan/8170349/webrev.00/
Please review a fix for a continuation/regression of JDK-8081491
<https://bugs.openjdk.java.net/browse/JDK-8081491> in which we made
sure that we print only the JTable rows/columns that is visible on
console.
This bug manifests itself as, despite marking JTable PrintMode to
FIT_WIDTH, we are printing only those columns that are visible on console.
However, if JTable PrintMode is FIT_WIDTH, then as per spec
https://docs.oracle.com/javase/8/docs/api/javax/swing/JTable.PrintMode.html#FIT_WIDTH
we should print all columns on each page (apparently irrespective of
what is visible)
The fix takes care of that by making sure the table bounds is adjusted
to clipwidth [which is already adjusted to total column width here
<http://hg.openjdk.java.net/jdk9/client/jdk/file/f7148ccb86bb/src/java.desktop/share/classes/javax/swing/TablePrintable.java#l504>]
so that all columns are printed and also rectangle border is drawn
encompassing all columns.
The reason of adjusting the table bounds was because table.print() calls
BasicTableUI.paint() where we compute visibleBounds
http://hg.openjdk.java.net/jdk9/client/jdk/file/a5e270f2c97d/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTableUI.java#l1817
therefore we need to adjust the visibleBounds to entire columns instead
of just the visible columns.
Regards
Prasanta
The 8081491 testcases passed with this fix as well.
Regards
Prasanta