<Swing Dev> RFR: [9] [JDK-8081491] The case print incomplete.

prasanta sadhukhan prasanta.sadhukhan at oracle.com
Wed Sep 2 11:36:27 UTC 2015


Hi,

Can this fix be reviewed?

Regards
Prasanta
On 8/28/2015 4:48 PM, prasanta sadhukhan wrote:
>
>
> On 8/26/2015 6:24 PM, Alexander Scherbatiy wrote:
>> On 8/25/2015 1:51 PM, prasanta sadhukhan wrote:
>>>
>>>
>>> On 8/25/2015 3:53 PM, Alexander Scherbatiy wrote:
>>>> On 8/24/2015 2:23 PM, prasanta sadhukhan wrote:
>>>>> Hi All,
>>>>>
>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8081491
>>>>> webrev: http://cr.openjdk.java.net/~psadhukhan/8081491/webrev.00/
>>>>>
>>>>> This seems to be a hidden JTable bug in which if the user does not 
>>>>> call pack() or set a ScrollPane() for JTable and rather use 
>>>>> JFrame.setSize() smaller than table size then it was found that 
>>>>> some of the rows which cannot be fitted in 1st page cannot get 
>>>>> printed on 2nd and subsequent pages resulting in blank cells to be 
>>>>> printed after 1st page.
>>>>> It was found that BasicTableUI checks for table bounds to fall 
>>>>> within the clip and if they do not intersect, it bails out from 
>>>>> painting the table cells.
>>>>
>>>>      What is the reason that the graphics clip does not intersect 
>>>> the table bounds during printing in the provided test case?
>>> The testcase does table.setSize(600,800) whereas frame setSize is 
>>> 400,600 .
>>> For 1st page, the clip was 0,0,384,752 and bounds was 0,0,384,562 so 
>>> they intersect and there's no problem in printing the rows in 1st page.
>>> After the 1st page is printed, the clip is set to 0,752,384,48 since 
>>> we have printed the rows that we can fit in 1st page and the next 
>>> set of rows are to be printed while bounds remains at 0,0,384,562 
>>> because JComponent getBounds is returning the visible frame bounds 
>>> which did not change.
>>
>>     The !bounds.intersects(clip) check prevents printing of table 
>> rows which are not visible on the frame.
>>     It seems that the issue is that extra rows which are not shown in 
>> the frame are printed on the first page.
>>     It means that the printed rows and columns should be calculated 
>> for the table bounds and clip intersection.
>>     The test can be updated to mention that only visible part of the 
>> table should be printed.
>>
> Have modified the code to print only the rows that are displayed on 
> console. Also updated the test to mention the same. Please review the 
> updated webrev.
>
> http://cr.openjdk.java.net/~psadhukhan/8081491/webrev.01/
>
> Regards
> Prasanta
>> Thanks,
>>    Alexandr.
>>
>>>
>>>> Please, also mention in the email title JDK version for which the 
>>>> fix is provided.
>>> Done
>>>
>>> Regards
>>> Prasanta
>>>
>>>> Thanks,
>>>>    Alexandr.
>>>>
>>>>> I devised a solution whereby it will not bail out till either rows 
>>>>> or columns are still left to be printed on subsequent pages . 
>>>>> Please review and let me know if it's ok.
>>>>>
>>>>> Regards
>>>>> Prasanta
>>>>
>>>
>>
>




More information about the swing-dev mailing list