Java examples for Swing:SpringLayout
This method is ripped off from SpringUtilities.java found on Sun's Java Tutorial pages.
/*/*from w w w . j a v a 2 s .c om*/ * 09/08/2005 * * UIUtil.java - Utility methods for org.fife.ui classes. * Copyright (C) 2005 Robert Futrell * http://fifesoft.com/rtext * Licensed under a modified BSD license. * See the included license file for details. */ //package com.java2s; import java.awt.Component; import java.awt.Container; import javax.swing.Spring; import javax.swing.SpringLayout; public class Main { /** * This method is ripped off from <code>SpringUtilities.java</code> found * on Sun's Java Tutorial pages. It takes a component whose layout is * <code>SpringLayout</code> and organizes the components it contains into * a nice grid. * Aligns the first <code>rows</code> * <code>cols</code> components of * <code>parent</code> in a grid. Each component in a column is as wide as * the maximum preferred width of the components in that column; height is * similarly determined for each row. The parent is made just big enough * to fit them all. * * @param parent The container whose layout is <code>SpringLayout</code>. * @param rows The number of rows of components to make in the container. * @param cols The number of columns of components to make. * @param initialX The x-location to start the grid at. * @param initialY The y-location to start the grid at. * @param xPad The x-padding between cells. * @param yPad The y-padding between cells. */ public static final void makeSpringCompactGrid(Container parent, int rows, int cols, int initialX, int initialY, int xPad, int yPad) { SpringLayout layout; try { layout = (SpringLayout) parent.getLayout(); } catch (ClassCastException cce) { System.err.println("The first argument to makeCompactGrid " + "must use SpringLayout."); return; } //Align all cells in each column and make them the same width. Spring x = Spring.constant(initialX); for (int c = 0; c < cols; c++) { Spring width = Spring.constant(0); for (int r = 0; r < rows; r++) { width = Spring.max(width, getConstraintsForCell(r, c, parent, cols) .getWidth()); } for (int r = 0; r < rows; r++) { SpringLayout.Constraints constraints = getConstraintsForCell( r, c, parent, cols); constraints.setX(x); constraints.setWidth(width); } x = Spring.sum(x, Spring.sum(width, Spring.constant(xPad))); } //Align all cells in each row and make them the same height. Spring y = Spring.constant(initialY); for (int r = 0; r < rows; r++) { Spring height = Spring.constant(0); for (int c = 0; c < cols; c++) { height = Spring.max(height, getConstraintsForCell(r, c, parent, cols) .getHeight()); } for (int c = 0; c < cols; c++) { SpringLayout.Constraints constraints = getConstraintsForCell( r, c, parent, cols); constraints.setY(y); constraints.setHeight(height); } y = Spring.sum(y, Spring.sum(height, Spring.constant(yPad))); } //Set the parent's size. SpringLayout.Constraints pCons = layout.getConstraints(parent); pCons.setConstraint(SpringLayout.SOUTH, y); pCons.setConstraint(SpringLayout.EAST, x); } /** * Used by makeSpringCompactGrid. This is ripped off directly from * <code>SpringUtilities.java</code> in the Sun Java Tutorial. * * @param parent The container whose layout must be an instance of * <code>SpringLayout</code>. * @return The spring constraints for the specified component contained * in <code>parent</code>. */ private static final SpringLayout.Constraints getConstraintsForCell( int row, int col, Container parent, int cols) { SpringLayout layout = (SpringLayout) parent.getLayout(); Component c = parent.getComponent(row * cols + col); return layout.getConstraints(c); } }