⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gridbaglayout.java

📁 linux下建立JAVA虚拟机的源码KAFFE
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
            continue;		          GridBagConstraints constraints =              lookupInternalConstraints(component);          int cellx = sumIntArray(layoutInfo.colWidths, constraints.gridx);          int celly = sumIntArray(layoutInfo.rowHeights, constraints.gridy);          int cellw = sumIntArray(layoutInfo.colWidths,                                  constraints.gridx + constraints.gridwidth) - cellx;          int cellh = sumIntArray(layoutInfo.rowHeights,                                  constraints.gridy + constraints.gridheight) - celly;          Insets insets = constraints.insets;          if (insets != null)	    {              cellx += insets.left;              celly += insets.top;              cellw -= insets.left + insets.right;              cellh -= insets.top + insets.bottom;	    }          Dimension dim = component.getPreferredSize();          // Note: Documentation says that padding is added on both sides, but          // visual inspection shows that the Sun implementation only adds it          // once, so we do the same.          dim.width += constraints.ipadx;          dim.height += constraints.ipady;          switch(constraints.fill)	    {            case GridBagConstraints.HORIZONTAL:              dim.width = cellw;              break;            case GridBagConstraints.VERTICAL:              dim.height = cellh;              break;            case GridBagConstraints.BOTH:              dim.width = cellw;              dim.height = cellh;              break;	    }          int x;          int y;          switch(constraints.anchor)	    {            case GridBagConstraints.NORTH:              x = cellx + (cellw - dim.width) / 2;              y = celly;              break;            case GridBagConstraints.SOUTH:              x = cellx + (cellw - dim.width) / 2;              y = celly + cellh - dim.height;              break;            case GridBagConstraints.WEST:              x = cellx;              y = celly + (cellh - dim.height) / 2;              break;            case GridBagConstraints.EAST:              x = cellx + cellw - dim.width;              y = celly + (cellh - dim.height) / 2;              break;            case GridBagConstraints.NORTHEAST:              x = cellx + cellw - dim.width;              y = celly;              break;            case GridBagConstraints.NORTHWEST:              x = cellx;              y = celly;              break;            case GridBagConstraints.SOUTHEAST:              x = cellx + cellw - dim.width;              y = celly + cellh - dim.height;              break;            case GridBagConstraints.SOUTHWEST:              x = cellx;              y = celly + cellh - dim.height;              break;            default:              x = cellx + (cellw - dim.width) / 2;              y = celly + (cellh - dim.height) / 2;              break;	    }          component.setBounds(layoutInfo.pos_x + x, layoutInfo.pos_y + y, dim.width, dim.height);	}      // DEBUG      //dumpLayoutInfo (layoutInfo);    }    /**     * Obsolete.     */    protected GridBagLayoutInfo GetLayoutInfo (Container parent, int sizeflag)    {      if (sizeflag != MINSIZE && sizeflag != PREFERREDSIZE)        throw new IllegalArgumentException();      Dimension parentDim = parent.getSize ();      Insets parentInsets = parent.getInsets ();      parentDim.width -= parentInsets.left + parentInsets.right;      parentDim.height -= parentInsets.top + parentInsets.bottom;         int current_y = 0;      int max_x = 0;      int max_y = 0;      // Guaranteed to contain the last component added to the given row      // or column, whose gridwidth/height is not REMAINDER.      HashMap lastInRow = new HashMap();      HashMap lastInCol = new HashMap();      Component[] components = parent.getComponents();      // Components sorted by gridwidths/heights,      // smallest to largest, with REMAINDER and RELATIVE at the end.      // These are useful when determining sizes and weights.      ArrayList sortedByWidth = new ArrayList(components.length);      ArrayList sortedByHeight = new ArrayList(components.length);      // STEP 1: first we figure out how many rows/columns      for (int i = 0; i < components.length; i++)	{          Component component = components [i];		          // If component is not visible we dont have to care about it.          if (!component.isVisible())            continue;		          // When looking up the constraint for the first time, check the          // original unmodified constraint.  After the first time, always          // refer to the internal modified constraint.          GridBagConstraints originalConstraints = lookupConstraints (component);          GridBagConstraints constraints = (GridBagConstraints) originalConstraints.clone();          internalcomptable.put(component, constraints);          // Cases:          //          // 1. gridy == RELATIVE, gridx == RELATIVE          //          //       use y as the row number; check for the next          //       available slot at row y          //          // 2. only gridx == RELATIVE          //          //       check for the next available slot at row gridy          //          // 3. only gridy == RELATIVE          //          //       check for the next available slot at column gridx          //          // 4. neither gridx or gridy == RELATIVE          //          //       nothing to check; just add it          // cases 1 and 2          if(constraints.gridx == GridBagConstraints.RELATIVE)            {              if (constraints.gridy == GridBagConstraints.RELATIVE)              constraints.gridy = current_y;              int x;              // Check the component that occupies the right-most spot in this              // row. We want to add this component after it.              // If this row is empty, add to the 0 position.              if (!lastInRow.containsKey(new Integer(constraints.gridy)))                 x = 0;              else                {                  Component lastComponent = (Component) lastInRow.get(new Integer(constraints.gridy));                  GridBagConstraints lastConstraints = lookupInternalConstraints(lastComponent);                  x = lastConstraints.gridx + Math.max(1, lastConstraints.gridwidth);                }              // Determine if this component will fit in the slot vertically.              // If not, bump it over to where it does fit.              for (int y = constraints.gridy + 1; y < constraints.gridy + Math.max(1, constraints.gridheight); y++)                {                  if (lastInRow.containsKey(new Integer(y)))                    {                      Component lastComponent = (Component) lastInRow.get(new Integer(y));                      GridBagConstraints lastConstraints = lookupInternalConstraints(lastComponent);                      x = Math.max (x,                                    lastConstraints.gridx + Math.max(1, lastConstraints.gridwidth));                    }                }              constraints.gridx = x;            }          // case 3          else if(constraints.gridy == GridBagConstraints.RELATIVE)            {              int y;              // Check the component that occupies the bottom-most spot in              // this column. We want to add this component below it.              // If this column is empty, add to the 0 position.              if (!lastInCol.containsKey(new Integer(constraints.gridx)))                 y = 0;              else                {                  Component lastComponent = (Component)lastInCol.get(new Integer(constraints.gridx));                  GridBagConstraints lastConstraints = lookupInternalConstraints(lastComponent);                  y = lastConstraints.gridy + Math.max(1, lastConstraints.gridheight);                }              // Determine if this component will fit in the slot horizontally.              // If not, bump it down to where it does fit.              for (int x = constraints.gridx + 1; x < constraints.gridx + Math.max(1, constraints.gridwidth); x++)                {                  if (lastInCol.containsKey(new Integer(x)))                    {                      Component lastComponent = (Component) lastInCol.get(new Integer(x));                      GridBagConstraints lastConstraints = lookupInternalConstraints(lastComponent);                      y = Math.max (y,                                    lastConstraints.gridy + Math.max(1, lastConstraints.gridheight));                    }                }              constraints.gridy = y;            }          // case 4: do nothing          max_x = Math.max(max_x,                            constraints.gridx + Math.max(1, constraints.gridwidth));          max_y = Math.max(max_y,                           constraints.gridy + Math.max(1, constraints.gridheight));          sortBySpan(component, constraints.gridwidth, sortedByWidth, true);          sortBySpan(component, constraints.gridheight, sortedByHeight, false);          // Update our reference points for RELATIVE gridx and gridy.          if(constraints.gridwidth == GridBagConstraints.REMAINDER)	    {              current_y = constraints.gridy + Math.max(1, constraints.gridheight);	    }          else if (constraints.gridwidth != GridBagConstraints.REMAINDER)	    {              for (int y = constraints.gridy; y < constraints.gridy + Math.max(1, constraints.gridheight); y++)                {                  if(lastInRow.containsKey(new Integer(y)))                    {                      Component lastComponent = (Component) lastInRow.get(new Integer(y));                      GridBagConstraints lastConstraints = lookupInternalConstraints(lastComponent);                      if (constraints.gridx > lastConstraints.gridx)                        {                          lastInRow.put(new Integer(y), component);                        }                    }                  else                    {                      lastInRow.put(new Integer(y), component);                    }                }              for (int x = constraints.gridx; x < constraints.gridx + Math.max(1, constraints.gridwidth); x++)                {                  if(lastInCol.containsKey(new Integer(x)))                    {                      Component lastComponent = (Component) lastInCol.get(new Integer(x));                      GridBagConstraints lastConstraints = lookupInternalConstraints(lastComponent);                      if (constraints.gridy > lastConstraints.gridy)                        {                          lastInCol.put(new Integer(x), component);                        }                    }                  else                    {                      lastInCol.put(new Integer(x), component);                    }                }	    }	} // end of STEP 1	      GridBagLayoutInfo info = new GridBagLayoutInfo(max_x, max_y);      // Check if column widths and row heights are overridden.      for (int x = 0; x < max_x; x++)        {          if(columnWidths != null && columnWidths.length > x)            info.colWidths[x] = columnWidths[x];          if(columnWeights != null && columnWeights.length > x)            info.colWeights[x] = columnWeights[x];        }      for (int y = 0; y < max_y; y++)        {          if(rowHeights != null && rowHeights.length > y)            info.rowHeights[y] = rowHeights[y];          if(rowWeights != null && rowWeights.length > y)            info.rowWeights[y] = rowWeights[y];        }      // STEP 2: Fix up any cells with width/height as REMAINDER/RELATIVE.      for (int i = 0; i < components.length; i++)        {          Component component = components [i];			          // If component is not visible we dont have to care about it.          if (!component.isVisible())            continue;			          GridBagConstraints constraints = lookupInternalConstraints (component);          if(constraints.gridwidth == GridBagConstraints.REMAINDER || constraints.gridwidth == GridBagConstraints.RELATIVE)            {              if(constraints.gridwidth == GridBagConstraints.REMAINDER)                {                  for (int y = constraints.gridy; y < constraints.gridy + Math.max(1, constraints.gridheight); y++)                    {                      if (lastInRow.containsKey(new Integer(y)))                        {                          Component lastComponent = (Component) lastInRow.get(new Integer(y));                          GridBagConstraints lastConstraints = lookupInternalConstraints(lastComponent);                          if (lastConstraints.gridwidth == GridBagConstraints.RELATIVE)                            {                              constraints.gridx = max_x - 1;                              break;                            }                          else                            {                              constraints.gridx = Math.max (constraints.gridx,                                                            lastConstraints.gridx + Math.max (1, lastConstraints.gridwidth));                            }                        }                    }                  constraints.gridwidth = max_x - constraints.gridx;                }              else if (constraints.gridwidth == GridBagConstraints.RELATIVE)                {                  constraints.gridwidth = max_x - constraints.gridx - 1;                }              // Re-sort              sortedByWidth.remove(sortedByWidth.indexOf(component));              sortBySpan(component, constraints.gridwidth, sortedByWidth, true);            }          if(constraints.gridheight == GridBagConstraints.REMAINDER || constraints.gridheight == GridBagConstraints.RELATIVE)            {              if(constraints.gridheight == GridBagConstraints.REMAINDER)                {                  for (int x = constraints.gridx; x < constraints.gridx + Math.max(1, constraints.gridwidth); x++)                    {                      if (lastInCol.containsKey(new Integer(x)))                        {                          Component lastComponent = (Component) lastInRow.get(new Integer(x));                          GridBagConstraints lastConstraints = lookupInternalConstraints(lastComponent);                          if (lastConstraints.gridheight == GridBagConstraints.RELATIVE)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -