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

📄 hsplitlayout.java

📁 ALGAE是一个快速创建算法演示的框架。目前支持的算法实现语言包括java和c
💻 JAVA
字号:
package edu.odu.cs.zeil.AlgAE.gui;import edu.odu.cs.zeil.AlgAE.Debug;import java.awt.Component;import java.awt.Container;import java.awt.Dimension;import java.awt.Insets;import java.awt.LayoutManager;import edu.odu.cs.zeil.AlgAE.gui.SplitLayout;public class HSplitLayout implements SplitLayout  {    private double leftFraction = 0.5;    private int leftSize = -1;    private int rightSize = -1;    private Dimension minSize;    private Dimension preferredSize;    private Component left;    private Component center;    private Component right;    public HSplitLayout(double leftFract) {        leftFraction = leftFract;	leftSize = -1;	minSize = new Dimension();	preferredSize = null;	left = center = right = null;    }    public void setTopFraction (double fraction)    {	leftFraction = fraction;	leftSize = -1;    }        public void alterSize (Dimension change)    {	int leftH = left.getSize().width;	int rghtH = right.getSize().width;	int h = Math.max(-leftH, Math.min(change.width, rghtH));        leftSize = leftH + h;        rightSize = rghtH - h;	leftFraction = -1.0;	left.invalidate();	right.invalidate();	left.getParent().validate();    }        /* Required by LayoutManager. */    public void addLayoutComponent(String name, Component comp) {    }    /* Required by LayoutManager. */    public void removeLayoutComponent(Component comp) {    }    private void setSizes(Container target)    {      if ((preferredSize == null) || (!target.isValid()))	{	  left = target.getComponent(0);	  center = target.getComponent(1);	  right = target.getComponent(2);	  if (preferredSize == null)	      preferredSize = new Dimension();	  	  Dimension dleft = new Dimension();	  Dimension dcenter = new Dimension();	  Dimension dright = new Dimension();	  // Compute minimum size	  dleft = left.getMinimumSize();	  dcenter = center.getMinimumSize();	  dright = left.getMinimumSize();	  minSize.height = Math.max (dleft.height, dright.height);	  minSize.width = dleft.width + dcenter.width + dright.width;	  	  // Compute preferred size	  dleft = left.getPreferredSize();	  dright = left.getPreferredSize();	  preferredSize.height = Math.max (dleft.height, dright.height);	  if (leftSize < 0)	      {		  leftFraction = (leftFraction < 0.01)? 0.01 : leftFraction;		  leftFraction = (leftFraction > 0.99)? 0.99 : leftFraction;		  preferredSize.width = dcenter.width + (int)		      Math.max (dleft.width / leftFraction,				dright.width / (1.0 - leftFraction));	      }	  else	      {		  preferredSize.width = leftSize + dcenter.width + rightSize;	      }	  Debug.show (Debug.splitters, "HSL preferredSize ", preferredSize);	  Debug.show (Debug.splitters, "HSL minSize ", minSize);	  	}	      }              /* Required by LayoutManager. */    public Dimension preferredLayoutSize(Container target) {        setSizes(target);        Insets insets = target.getInsets();        Dimension dim = new Dimension	    (preferredSize.width + insets.left + insets.right,	     preferredSize.height + insets.top + insets.bottom);        return dim;    }    /* Required by LayoutManager. */    public Dimension minimumLayoutSize(Container target) {        setSizes(target);        Insets insets = target.getInsets();        Dimension dim = new Dimension	    (minSize.width + insets.left + insets.right,	     minSize.height + insets.top + insets.bottom);        return dim;    }    private void sanityCheck (Dimension proposedSize,			      Component c)    {	Dimension minSize = c.getMinimumSize();	Dimension maxSize = c.getMaximumSize();		proposedSize.height = Math.max(minSize.height,				      Math.min(maxSize.height,					       proposedSize.height));	proposedSize.width = Math.max(minSize.width,				       Math.min(maxSize.width,						proposedSize.width));    }    	    /* 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 target) {      synchronized (this) {        Insets insets = target.getInsets();	Dimension targetSize = target.getSize();	Dimension available = new Dimension	    (targetSize.width - (insets.left + insets.right),	     targetSize.height - (insets.top + insets.bottom));	setSizes(target);	Dimension dleft = new Dimension();	Dimension dright = new Dimension();	Dimension dcenter = center.getMinimumSize();	int x = insets.top;	int y = insets.left;	int h = available.height;	int w = 0;		if (leftSize < 0)	    {		Debug.show (Debug.splitters, "HSL.layoutContainer leftFraction ", leftFraction);		w = (int)(leftFraction * (available.width - dcenter.width));	    }	else	    {		Debug.show (Debug.splitters, "HSL.layoutContainer leftSize ", leftSize);		w = leftSize;	    }		left.setSize (w, h);	left.getPreferredSize();	left.setBounds (x, y, w, h);	Debug.show (Debug.splitters, "HSL.left x ", x);	Debug.show (Debug.splitters, "HSL.left w ", w);		x += w;		center.setSize (dcenter.width, h);	center.getPreferredSize();	center.setBounds (x, y, dcenter.width, h);		x += dcenter.width;		w = rightSize = available.width - x;	right.setSize (w, h);	right.getPreferredSize();	right.setBounds (x, y, w, h);	Debug.show (Debug.splitters, "HSL.right x ", x);	Debug.show (Debug.splitters, "HSL.right w ", w);      }      /* left.validate();         center.validate();         right.validate();      */    }            public String toString() {        return getClass().getName() + "[leftFraction=" + leftFraction + "]";    }}

⌨️ 快捷键说明

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