<Swing Dev> [9] Review Request for 8001470: JTextField's size is computed incorrectly when it contains Indic or Thai characters
Sergey Bylokhov
Sergey.Bylokhov at oracle.com
Mon Apr 27 15:33:47 UTC 2015
Hi, Semyon.
The fix looks fine. Please confirm that regr/jck tests passed after the fix.
On 27.04.15 18:12, Semyon Sadetsky wrote:
> Hello,
>
> Please review JDK9 fix.
> webrev: http://cr.openjdk.java.net/~ssadetsky/8001470/webrev.00/
> bug: https://bugs.openjdk.java.net/browse/JDK-8001470
>
>
> ***ROOT CAUSE
> The setVisible() call without pack() or setBounds() means set the
> frame size to the initial window size. The initial window size usually
> is the size to fit the window frame and title only, so the content
> pane receives some width and zero height. Since GridLayout does not
> limit minimum component size when doing layout under fixed size, the
> components receive zero height. This situation we have right after the
> setVisible(true) call.
> Now we do call our pack() call to do layout of the fame which is
> already visible. The pack() triggers getPreferedSize() calls for
> components. Calculation of TextFileld preferred size is performed in
> its View which setSize() method should be called. For an i18n text
> filed the view is a complex data structure which requires the right
> initialization. According to line 942 of the BasicTextUI class the
> view initialization happens only when both component's width and
> height equal to 0, which is an expected situation for the initial
> layout call. But in our specific pack() call this never happens
> because while the height is actually equals 0 the width is not,
> because component received such size as the result of the previous
> frame.setVisible() call. So the view.setSize() method is not called at
> all and preferred size is calculated incorrectly, the zero height is
> obtained particularly.
>
> ***SOLUTION
> As a fix it is proposed to change condition in line 942 of the
> BasicTextUI to OR to cover the scenario.
>
> ***TESTING
> A test case for the scenario is added.
>
> --Semyon
--
Best regards, Sergey.
More information about the swing-dev
mailing list