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

📄 springutilities.java

📁 It is all about project scheduling. GanttProject is a tool for creating a project schedule by means
💻 JAVA
字号:
package net.sourceforge.ganttproject.gui.options;import java.awt.Component;import java.awt.Container;import javax.swing.Spring;import javax.swing.SpringLayout;/** * A 1.4 file that provides utility methods for creating form- or grid-style * layouts with SpringLayout. These utilities are used by several programs, such * as SpringBox and SpringCompactGrid. */public class SpringUtilities {    /**     * A debugging utility that prints to stdout the component's minimum,     * preferred, and maximum sizes.     */    public static void printSizes(Component c) {        System.out.println("minimumSize = " + c.getMinimumSize());        System.out.println("preferredSize = " + c.getPreferredSize());        System.out.println("maximumSize = " + c.getMaximumSize());    }    /**     * Aligns the first <code>rows</code> * <code>cols</code> components of     * <code>parent</code> in a grid. Each component is as big as the maximum     * preferred width and height of the components. The parent is made just big     * enough to fit them all.     *      * @param rows     *            number of rows     * @param cols     *            number of columns     * @param initialX     *            x location to start the grid at     * @param initialY     *            y location to start the grid at     * @param xPad     *            x padding between cells     * @param yPad     *            y padding between cells     */    public static void makeGrid(Container parent, int rows, int cols,            int initialX, int initialY, int xPad, int yPad) {        SpringLayout layout;        try {            layout = (SpringLayout) parent.getLayout();        } catch (ClassCastException exc) {            System.err                    .println("The first argument to makeGrid must use SpringLayout.");            return;        }        Spring xPadSpring = Spring.constant(xPad);        Spring yPadSpring = Spring.constant(yPad);        Spring initialXSpring = Spring.constant(initialX);        Spring initialYSpring = Spring.constant(initialY);        int max = rows * cols;        // Calculate Springs that are the max of the width/height so that all        // cells have the same size.        Spring maxWidthSpring = layout.getConstraints(parent.getComponent(0))                .getWidth();        Spring maxHeightSpring = layout.getConstraints(parent.getComponent(0))                .getWidth();        for (int i = 1; i < max; i++) {            SpringLayout.Constraints cons = layout.getConstraints(parent                    .getComponent(i));            maxWidthSpring = Spring.max(maxWidthSpring, cons.getWidth());            maxHeightSpring = Spring.max(maxHeightSpring, cons.getHeight());        }        // Apply the new width/height Spring. This forces all the        // components to have the same size.        for (int i = 0; i < max; i++) {            SpringLayout.Constraints cons = layout.getConstraints(parent                    .getComponent(i));            cons.setWidth(maxWidthSpring);            cons.setHeight(maxHeightSpring);        }        // Then adjust the x/y constraints of all the cells so that they        // are aligned in a grid.        SpringLayout.Constraints lastCons = null;        SpringLayout.Constraints lastRowCons = null;        for (int i = 0; i < max; i++) {            SpringLayout.Constraints cons = layout.getConstraints(parent                    .getComponent(i));            if (i % cols == 0) { // start of new row                lastRowCons = lastCons;                cons.setX(initialXSpring);            } else { // x position depends on previous component                cons.setX(Spring.sum(lastCons.getConstraint(SpringLayout.EAST),                        xPadSpring));            }            if (i / cols == 0) { // first row                cons.setY(initialYSpring);            } else { // y position depends on previous row                cons.setY(Spring.sum(lastRowCons                        .getConstraint(SpringLayout.SOUTH), yPadSpring));            }            lastCons = cons;        }        // Set the parent's size.        SpringLayout.Constraints pCons = layout.getConstraints(parent);        pCons.setConstraint(SpringLayout.SOUTH, Spring.sum(Spring                .constant(yPad), lastCons.getConstraint(SpringLayout.SOUTH)));        pCons.setConstraint(SpringLayout.EAST, Spring.sum(                Spring.constant(xPad), lastCons                        .getConstraint(SpringLayout.EAST)));    }    /* Used by makeCompactGrid. */    private static 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);    }    /**     * 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 rows     *            number of rows     * @param cols     *            number of columns     * @param initialX     *            x location to start the grid at     * @param initialY     *            y location to start the grid at     * @param xPad     *            x padding between cells     * @param yPad     *            y padding between cells     */    public static void makeCompactGrid(Container parent, int rows, int cols,            int initialX, int initialY, int xPad, int yPad) {        SpringLayout layout;        try {            layout = (SpringLayout) parent.getLayout();        } catch (ClassCastException exc) {            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);    }}

⌨️ 快捷键说明

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