<Swing Dev> [12] RFR JDK-8202702:Clearing selection on JTable causes disappearance of a row

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Tue Aug 14 02:31:24 UTC 2018


Looks fine.

On 08/08/2018 07:51, Prasanta Sadhukhan wrote:
> Hi All,
> 
> Please review a fix for an issue where it is seen that
> when clearing a selected row by calling JTable.clearSelection() causes 
> this selected row to be not painted.
> 
> This is because, the present BasicTableUI paint() method paints JTable 
> cell based on rMin and rMax value which are
> the min index and max index of the rows to be painted. Now, this rMax is 
> decremented based on some condition due to a printing problem
> where 1 extra row was printed in page than what is being shown in console.
> This decrement of rMax causes rMax to become less than or equal to rMin, 
> when a selected row is cleared and JTable paint is called
> and so when paintCells() is called, it causes skipping of row painting, 
> thus causing disappearance of that row.
> 
> For example, if row6 is selected and clearSelection() is called,
> then rMin=rMax=6 but decrementing rMax will make it 5 so paintCells() 
> "for" loop to repaint the JTable cell 6 will not be executed and row6 
> will disappear.
> 
> Proposed fix is to check if decrementing rMax will make it lesser than 
> or equal to rMin, then do not decrement rMax, so that rows can be 
> painted properly.
> Previous JDK-8081491 and JDK-8159068 testcases works well after this 
> change.
> 
> Bug: https://bugs.openjdk.java.net/browse/JDK-8202702
> webrev: http://cr.openjdk.java.net/~psadhukhan/8202702/webrev.0/
> 
> Regards
> Prasanta


-- 
Best regards, Sergey.



More information about the swing-dev mailing list