United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
JDK-4515083 : java.awt.GridLayout.minimumLayoutSize doesn't comply to spec

Details
Type:
Bug
Submit Date:
2001-10-16
Status:
Closed
Updated Date:
2004-03-20
Project Name:
JDK
Resolved Date:
2003-11-14
Component:
client-libs
OS:
solaris_2.5,generic
Sub-Component:
java.awt
CPU:
sparc,generic
Priority:
P4
Resolution:
Fixed
Affected Versions:
1.4.0,5.0
Fixed Versions:
5.0 (beta)

Related Reports
Relates:

Sub Tasks

Description

Name: bkR10101			Date: 10/16/2001



Specification for public Dimension minimumLayoutSize(Container parent):
"Determines the minimum size of the container argument using this grid 
layout. The minimum width of a grid layout is the largest minimum width 
of any of the widths in the container times the number of columns, plus 
the horizontal padding times the number of columns plus one, plus the 
left and right insets of the target container. The minimum height of a 
grid layout is the largest minimum height of any of the heights in the 
container times the number of rows, plus the vertical padding times 
the number of rows plus one, plus the top and bottom insets of the 
target container".

Sample code:
====================== minimumLS.java ===============================
import java.awt.*;

public class minimumLS {

    public static void main(String argv[]) {
        int rows = 1; int cols = 2; 

        int hgap = 2; int vgap = 3;

        GridLayout gl = new GridLayout(rows, cols, hgap, vgap);
  
        Container parent = new Container();
        parent.setLayout(gl);
        parent.setSize(100, 200);

        Insets insets = parent.getInsets();
        System.out.println("Insets left " + insets.left + " right " +
                           insets.right + " top " + insets.top + 
                           " bottom " + insets.bottom);

        Component comp = new Component(){};
        comp.setSize(13, 24);

        parent.add(comp, "comp");
        System.out.println("comp min size " + comp.getMinimumSize());

        Component comp2 = new Component(){};
        comp2.setSize(19, 11);

        parent.add(comp2, "comp2");
        System.out.println("comp2 min size " + comp2.getMinimumSize());

        Dimension dim = gl.minimumLayoutSize(parent);
        System.out.println("minimum layout size " + dim);
    }
}
==================== end of minimumLS.java ===============================
Output under JDK version "1.4.0-beta3-b81" ===============================
~/bugs
java minimumLS
Insets left 0 right 0 top 0 bottom 0
comp min size java.awt.Dimension[width=13,height=24]
comp2 min size java.awt.Dimension[width=19,height=11]
minimum layout size java.awt.Dimension[width=40,height=24]
~/bugs
==========================================================================
So first was created GridLayout with 1 row and 2 columns. Its hgap was 
set to 2 and vgap was set to 3. Then created parent container. Then two
components were added to container. Sizes of components are (13, 24) and 
(19, 11).

Minimum layout size returned by gl.minimumLayoutSize(parent):
[width=40,height=24], it is not equal one according specification.

Minimum layout size according specification is 
width : max(13, 19) * 2 + 2 * (2+1) + 0 + 0 = 38 + 6 = 44
height : max(24, 11) * 1 + 3 * (1+1) + 0 + 0 = 24 + 6 = 30

======================================================================

                                    

Comments
EVALUATION

Commit to fix in Tiger (spec issue that affects TCK).  
###@###.### 2002-05-29
                                     
2002-05-29
SUGGESTED FIX

------- GridLayout.java -------
*** /tmp/dhQaONU        Wed May 29 19:58:51 2002
--- GridLayout.java     Wed May 29 19:58:44 2002
***************
*** 329,340 ****
       * <p>
       * The minimum width of a grid layout is the largest minimum width 
       * of any of the components in the container times the number of columns, 
!      * plus the horizontal padding times the number of columns plus one, 
       * plus the left and right insets of the target container. 
       * <p>
       * The minimum height of a grid layout is the largest minimum height 
       * of any of the components in the container times the number of rows, 
!      * plus the vertical padding times the number of rows plus one, plus 
       * the top and bottom insets of the target container. 
       *  
       * @param       target   the container in which to do the layout
--- 329,340 ----
       * <p>
       * The minimum width of a grid layout is the largest minimum width 
       * of any of the components in the container times the number of columns, 
!      * plus the horizontal padding times the number of columns minus one, 
       * plus the left and right insets of the target container. 
       * <p>
       * The minimum height of a grid layout is the largest minimum height 
       * of any of the components in the container times the number of rows, 
!      * plus the vertical padding times the number of rows minus one, plus 
       * the top and bottom insets of the target container. 
       *  
       * @param       target   the container in which to do the layout
                                     
2004-06-11
CONVERTED DATA

BugTraq+ Release Management Values

COMMIT TO FIX:
tiger-beta

FIXED IN:
tiger-beta

INTEGRATED IN:
tiger-beta

VERIFIED IN:
tiger


                                     
2004-06-14



Hardware and Software, Engineered to Work Together