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

Alexander Scherbatiy alexandr.scherbatiy at oracle.com
Fri Sep 4 15:27:31 UTC 2015


  Could the clip.getLocation() be differ from them 
visibleBounds.getLocation()?

  Thanks,
  Alexandr.

On 9/4/2015 3:32 PM, prasanta sadhukhan wrote:
> Any reviewers for this please?
>
> On 9/2/2015 5:06 PM, prasanta sadhukhan wrote:
>> 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