<Swing Dev> [9] RFR JDK-8159068:The rendering of JTable is broken
Prasanta Sadhukhan
prasanta.sadhukhan at oracle.com
Tue Jun 21 11:57:34 UTC 2016
On 6/21/2016 5:16 PM, Alexandr Scherbatiy wrote:
> On 6/21/2016 1:58 PM, Prasanta Sadhukhan wrote:
>>
>>
>> On 6/21/2016 4:14 PM, Alexandr Scherbatiy wrote:
>>> On 6/20/2016 8:10 AM, prasanta sadhukhan wrote:
>>>>
>>>> Gentle reminder for review!!
>>>>
>>>> Regards
>>>> Prasanta
>>>> On 6/13/2016 4:31 PM, prasanta sadhukhan wrote:
>>>>> On 6/13/2016 12:51 PM, prasanta sadhukhan wrote:
>>>>>> Hi All,
>>>>>>
>>>>>> Please review a fix for jdk9 where it was seen that if we try to
>>>>>> select some rows in a JTable, the text painted in the rows goes
>>>>>> missing.
>>>>>>
>>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8159068
>>>>>>
>>>>>> webrev: http://cr.openjdk.java.net/~psadhukhan/8159068/webrev.00/
>>>>>>
>>>>>> The issue was rMax value was decremented wrongly so when
>>>>>> paintCells() is called with wrong rMax, some rows were not
>>>>>> printed correctly.
>>>>>>
>>>>>> Fix is to make sure rmax is decremented properly, only when we
>>>>>> are trying to print whole visible portion of JTable and NOT when
>>>>>> some rows are being painted.
>>>
>>> Could you give two samples how this algorithm work. One sample
>>> where a whole visible portion of a JTable and another where some
>>> rows are being printed. What are rMax and rMin values in both cases
>>> and how are they calculated?
>>>
>> If a JTable is of 50 rows and only 35 are being visible in page 1, then
>> if whole visible portion of JTable is printed, rMin will be 0 and
>> rMax was 35
>> so 36 rows were getting printed so I decrement rMax by 1 to 34 so
>> only 35 will be printed (same as shown on console).
>> When we select some row of JTable as in the case of LostText
>> testcase, rMin will be say 6 and rMax will be 9 in which case also, I
>> was decrementing rMax so rMin=6, rMax=8 so next row was not getting
>> painted.
> And what are indices of the selected rows?
>
It will depend on the last selection. At start, rMin = 0 , rMax = last
indice, say 10 for a JTable of 10 rows
Now, if we select row 5, rMin and rMax both becomes 5 and we decrement
rMax so rMax becomes less than rMin and paintCell() due to this check
(int row = rMin; row <= rMax; row++) it does not do
paintCell(g, cellRect, row, column)
and nothing gets painted.
Regards
Prasanta
> Thanks,
> Alexandr.
>
>>
>> Regards
>> Prasanta
>>> Thanks,
>>> Alexandr.
>>>
>>>>>>
>>>>>> Regarding the regression testcase, I could not make it automated
>>>>>> as the failure happens on random iteration.
>>>>>> and also, getting selection background/foreground was giving same
>>>>>> values with and without the missing text.
>>>>>>
>>>>> Also, since it is a regression of 8081491
>>>>> <https://bugs.openjdk.java.net/browse/JDK-8081491>, it's testcase
>>>>> are working fine with this fix and so did SwingSet2 JTable demo.
>>>>>> Regards
>>>>>> Prasanat
>>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/swing-dev/attachments/20160621/dd025ce8/attachment.html>
More information about the swing-dev
mailing list