VerticalLayout.java
上传用户:zhengdagz
上传日期:2014-03-06
资源大小:1956k
文件大小:3k
源码类别:

xml/soap/webservice

开发平台:

Java

  1. /*
  2.  * $Id: VerticalLayout.java,v 1.3 2005/10/10 18:01:47 rbair Exp $
  3.  *
  4.  * Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle,
  5.  * Santa Clara, California 95054, U.S.A. All rights reserved.
  6.  *
  7.  * This library is free software; you can redistribute it and/or
  8.  * modify it under the terms of the GNU Lesser General Public
  9.  * License as published by the Free Software Foundation; either
  10.  * version 2.1 of the License, or (at your option) any later version.
  11.  * 
  12.  * This library is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15.  * Lesser General Public License for more details.
  16.  * 
  17.  * You should have received a copy of the GNU Lesser General Public
  18.  * License along with this library; if not, write to the Free Software
  19.  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  20.  */
  21. package org.jdesktop.swingx;
  22. import java.awt.Component;
  23. import java.awt.Container;
  24. import java.awt.Dimension;
  25. import java.awt.Insets;
  26. import java.awt.LayoutManager;
  27. /**
  28.  * Organizes components in a vertical layout.
  29.  * 
  30.  * @author fred
  31.  */
  32. public class VerticalLayout implements LayoutManager {
  33.   private int gap = 0;
  34.   public VerticalLayout() {}
  35.   public VerticalLayout(int gap) {
  36.     this.gap = gap;
  37.   }
  38.   public int getGap() {
  39.     return gap;
  40.   }
  41.   public void setGap(int gap) {
  42.     this.gap = gap;
  43.   }
  44.   public void addLayoutComponent(String name, Component c) {}
  45.   public void layoutContainer(Container parent) {
  46.     Insets insets = parent.getInsets();
  47.     Dimension size = parent.getSize();
  48.     int width = size.width - insets.left - insets.right;
  49.     int height = insets.top;
  50.     for (int i = 0, c = parent.getComponentCount(); i < c; i++) {
  51.       Component m = parent.getComponent(i);
  52.       if (m.isVisible()) {
  53.         m.setBounds(insets.left, height, width, m.getPreferredSize().height);
  54.         height += m.getSize().height + gap;
  55.       }
  56.     }
  57.   }
  58.   public Dimension minimumLayoutSize(Container parent) {
  59.     return preferredLayoutSize(parent);
  60.   }
  61.   public Dimension preferredLayoutSize(Container parent) {
  62.     Insets insets = parent.getInsets();
  63.     Dimension pref = new Dimension(0, 0);
  64.     for (int i = 0, c = parent.getComponentCount(); i < c; i++) {
  65.       Component m = parent.getComponent(i);
  66.       if (m.isVisible()) {
  67.         Dimension componentPreferredSize =
  68.           parent.getComponent(i).getPreferredSize(); 
  69.         pref.height += componentPreferredSize.height + gap;
  70.         pref.width = Math.max(pref.width, componentPreferredSize.width);
  71.       }
  72.     }
  73.     pref.width += insets.left + insets.right;
  74.     pref.height += insets.top + insets.bottom;
  75.     return pref;
  76.   }
  77.   public void removeLayoutComponent(Component c) {}
  78. }