RFR: 8257810: Only First page are printed in JTable.scrollRectToVisible [v7]

Alexey Ivanov aivanov at openjdk.java.net
Mon May 9 17:31:52 UTC 2022


On Mon, 9 May 2022 05:50:39 GMT, Prasanta Sadhukhan <psadhukhan at openjdk.org> wrote:

>> Issue was when printing a JTable which sits inside a JScrollPane and the table is scrolled down to the end to about 1000th row, only the first page is printed. 
>> This is because when the table is scrolled down to last page, the bounds.y becomes -ve 
>> [x=0,y=-15260,width=968,height=16000]
>> so the check `if (!((table.getBounds()).intersects(clip)))` is satisfied only for 1st page where bounds just intersects the clip [x=0,y=0,width=968,height=1296]
>> but subsequent pages clip 
>> [[x=0,y=1296,width=968,height=1296], 
>> [x=0,y=2592,width=968,height=1296], 
>> [x=0,y=3888,width=968,height=1296] etc is not intesecting so they are not printed
>> 
>> This is a regression of JDK-8081491 which was **reworked** in JDK-8236907 where the bounds calculation and usage is made same as in BasicTableUI
>> We need to use the same resetted bounds for this intersection calculation too as was done for JDK-8236907
>> 
>> Tested against JDK-8081491, 8170349, JDK-8236907 testcases along with other regression tests and all are OK (link in JBS)
>
> Prasanta Sadhukhan has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Test updated

Changes requested by aivanov (Reviewer).

test/jdk/javax/swing/JTable/PrintAllPagesTest.java line 27:

> 25:  * @bug 8257810
> 26:  * @summary  Verifies if all pages are printed if scrollRectToVisible is set.
> 27:  * @run main/manual PrintAllPagesTest

Should the test have `@key printer` in its description?

test/jdk/javax/swing/JTable/PrintAllPagesTest.java line 136:

> 134: 
> 135:         dialog = new JDialog(f, "Instructions for Table Print Test");
> 136:         dialog.setTitle("textselectionTest");

I guess this line should be removed now. The title for the dialog is provided in its constructor.

test/jdk/javax/swing/JTable/PrintAllPagesTest.java line 156:

> 154:         mainPanel.add(buttonPanel, BorderLayout.SOUTH);
> 155:         dialog.add(mainPanel);
> 156:         dialog.setUndecorated(true);

Let's remove `dialog.setUndecorated(true);` line now that closing the dialog is properly handled.

-------------

PR: https://git.openjdk.java.net/jdk/pull/8141



More information about the client-libs-dev mailing list