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

Prasanta Sadhukhan prasanta.sadhukhan at oracle.com
Wed Dec 21 14:06:30 UTC 2016


Hi Alex,

Further to our discussion where you suggested not to modify table 
setBounds (even though it was for momentarily) and
  use property to convey printMode FIT_WIDTH to BasicTableUI, I did just 
the same.
Please find the modified webrev:
http://cr.openjdk.java.net/~psadhukhan/8170349/webrev.01/

Regards
Prasanta
On 12/9/2016 5:57 PM, Prasanta Sadhukhan wrote:
>
>
>
> 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
>>>>>>
>>>>>> 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.
>>>>   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/20161221/afaa7166/attachment.html>


More information about the swing-dev mailing list