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

📄 diagonallayout.java

📁 这是一个很好的java教程
💻 JAVA
字号:
/* * 1.1 version.  For the 1.2 version, you would probably * change getSize() to getWidth() or getHeight(). */import java.awt.*;import java.util.Vector;public class DiagonalLayout implements LayoutManager {    private int vgap;    private int minWidth = 0, minHeight = 0;    private int preferredWidth = 0, preferredHeight = 0;    private boolean sizeUnknown = true;    public DiagonalLayout() {        this(5);    }    public DiagonalLayout(int v) {        vgap = v;    }    /* Required by LayoutManager. */    public void addLayoutComponent(String name, Component comp) {    }    /* Required by LayoutManager. */    public void removeLayoutComponent(Component comp) {    }    private void setSizes(Container parent) {        int nComps = parent.getComponentCount();        Dimension d = null;        //Reset preferred/minimum width and height.        preferredWidth = 0;        preferredHeight = 0;        minWidth = 0;        minHeight = 0;        for (int i = 0; i < nComps; i++) {            Component c = parent.getComponent(i);            if (c.isVisible()) {                d = c.getPreferredSize();                if (i > 0) {                    preferredWidth += d.width/2;                     preferredHeight += vgap;                } else {                    preferredWidth = d.width;                }                preferredHeight += d.height;                minWidth = Math.max(c.getMinimumSize().width,                                     minWidth);                minHeight = preferredHeight;            }        }    }    /* Required by LayoutManager. */    public Dimension preferredLayoutSize(Container parent) {        Dimension dim = new Dimension(0, 0);        int nComps = parent.getComponentCount();        setSizes(parent);        //Always add the container's insets!        Insets insets = parent.getInsets();        dim.width = preferredWidth                     + insets.left + insets.right;        dim.height = preferredHeight                      + insets.top + insets.bottom;        sizeUnknown = false;        return dim;    }    /* Required by LayoutManager. */    public Dimension minimumLayoutSize(Container parent) {        Dimension dim = new Dimension(0, 0);        int nComps = parent.getComponentCount();        //Always add the container's insets!        Insets insets = parent.getInsets();        dim.width = minWidth                     + insets.left + insets.right;        dim.height = minHeight                      + insets.top + insets.bottom;        sizeUnknown = false;        return dim;    }    /* Required by LayoutManager. */    /*      * This is called when the panel is first displayed,      * and every time its size changes.      * Note: You CAN'T assume preferredLayoutSize or      * minimumLayoutSize will be called -- in the case      * of applets, at least, they probably won't be.      */    public void layoutContainer(Container parent) {        Insets insets = parent.getInsets();        int maxWidth = parent.getSize().width                       - (insets.left + insets.right);        int maxHeight = parent.getSize().height                        - (insets.top + insets.bottom);        int nComps = parent.getComponentCount();        int previousWidth = 0, previousHeight = 0;        int x = 0, y = insets.top;        int rowh = 0, start = 0;        int xFudge = 0, yFudge = 0;        boolean oneColumn = false;        // Go through the components' sizes, if neither         // preferredLayoutSize nor minimumLayoutSize has         // been called.        if (sizeUnknown) {            setSizes(parent);        }                    if (maxWidth <= minWidth) {            oneColumn = true;        }        if (maxWidth != preferredWidth) {            xFudge = (maxWidth - preferredWidth)/(nComps - 1);        }        if (maxHeight > preferredHeight) {            yFudge = (maxHeight - preferredHeight)/(nComps - 1);        }        for (int i = 0 ; i < nComps ; i++) {            Component c = parent.getComponent(i);            if (c.isVisible()) {                Dimension d = c.getPreferredSize();                                 // increase x and y, if appropriate                if (i > 0) {                     if (!oneColumn) {                        x += previousWidth/2 + xFudge;                    }                    y += previousHeight + vgap + yFudge;                }                                // If x is too large,                 if ((!oneColumn) &&                    (x + d.width) >                     (parent.getSize().width - insets.right)) {                    // reduce x to a reasonable number.                    x = parent.getSize().width                         - insets.bottom - d.width;                }                // If y is too large,                 if ((y + d.height)                     > (parent.getSize().height - insets.bottom)) {                    // do nothing.                    // Another choice would be to do what we do to x.                }                // Set the component's size and position.                c.setBounds(x, y, d.width, d.height);                previousWidth = d.width;                previousHeight = d.height;            }        }    }        public String toString() {        String str = "";        return getClass().getName() + "[vgap=" + vgap + str + "]";    }}

⌨️ 快捷键说明

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