<Swing Dev> [9] RFR: JDK-8170349: The printed content is beyond the borders.

Avik Niyogi avik.niyogi at oracle.com
Fri Dec 16 08:39:34 UTC 2016


Fix looks good to me.
> 
> 
> 
> On 12/9/2016 8:18 PM, Alexandr Scherbatiy wrote:
>> On 12/6/2016 5:52 PM, Prasanta Sadhukhan wrote:
>>> On 12/6/2016 8:17 PM, Alexandr Scherbatiy wrote:
>>>> On 12/1/2016 9:16 AM, Prasanta Sadhukhan wrote:
>>>>> On 11/30/2016 2:53 PM, Prasanta Sadhukhan wrote:
>>>>>> 
>>>>>> Hi All,
>>>>>> 
>>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8170349 <https://bugs.openjdk.java.net/browse/JDK-8170349>
>>>>>> 
>>>>>> webrev: http://cr.openjdk.java.net/~psadhukhan/8170349/webrev.00/ <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 <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 <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 <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 <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.
>>>>  Did the test Swing_JTable/Manual/PrintManualTest_FitWidthMultiple 
>>>> pass before the fix for the JDK-8081491?
>>    Which logic in the fix JDK-8081491 causes that the printing a 
>> table with FIT_WIDTH mode stopped to properly work?
> We calculate visibleBounds in BasicTableUI for 8081491 so even for 
> FIT_WIDTH, it was printing the visible portion of table. Since, in 
> BasicTableUI we cannot access TablePrintable.PrintMode value(since it 
> is private), we need to make sure the table bounds set to full column 
> width so that visibleBounds calculated in BasicTableUI is tricked to 
> believe, that we are printing whole columns.
> 
> Regards
> Prasanta
>> 
>>  Thanks,
>>  Alexandr.
>>> Yes, it did.
>>> 
>>> Regards
>>> Prasanta
>>>>  It looks like the table bounds never have been changed in the 
>>>> TablePrintable.
>>>> 
>>>>  Thanks,
>>>>  Alexandr.
>>>>> 
>>>>> Regards
>>>>> Prasanta
>>>>>> The 8081491 testcases passed with this fix as well.
>>>>>> 
>>>>>> Regards
>>>>>> Prasanta
>>>>> 
>>>> 
>>> 
>> 
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/swing-dev/attachments/20161216/35bbd33b/attachment.html>


More information about the swing-dev mailing list