package bluej.utility;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.LayoutManager;
| This is a layout class for a container that has exactly one child component.
| The layout places that child in the centre of the container.
|
| @author mik
| @version 0.2
|
public class CenterLayout
implements LayoutManager{
public CenterLayout()
{
}
@Override
public void layoutContainer(Container target)
{
synchronized (target.getTreeLock()) {
Insets insets = target.getInsets();
int maxwidth = target.getWidth() - (insets.left + insets.right);
int maxheight = target.getHeight() - (insets.top + insets.bottom);
Component m = target.getComponent(0);
if (m.isVisible()) {
Dimension d = m.getPreferredSize();
d.width = Math.min(d.width, maxwidth);
d.height = Math.min(d.height, maxheight);
m.setSize(d);
int hspace = maxwidth - d.width;
int xpos = insets.left + (hspace / 2);
int vspace = maxheight - d.height;
int ypos = insets.top + (vspace / 2);
m.setLocation(xpos, ypos);
}
}
}
@Override
public void addLayoutComponent(String name, Component comp)
{
}
@Override
public void removeLayoutComponent(Component comp)
{
}
@Override
public Dimension preferredLayoutSize(Container parent)
{
Dimension d;
if (parent.getComponentCount() > 0) {
Component m = parent.getComponent(0);
d = m.getPreferredSize();
}
else {
d = new Dimension(0,0);
}
Insets insets = parent.getInsets();
d.height += insets.top + insets.bottom;
d.width += insets.left + insets.right;
return d;
}
@Override
public Dimension minimumLayoutSize(Container parent)
{
Dimension d;
if (parent.getComponentCount() > 0) {
Component m = parent.getComponent(0);
d = m.getMinimumSize();
}
else {
d = new Dimension(0,0);
}
Insets insets = parent.getInsets();
d.height += insets.top + insets.bottom;
d.width += insets.left + insets.right;
return d;
}
}
top,
use,
map,
class CenterLayout
. CenterLayout
. layoutContainer
. addLayoutComponent
. removeLayoutComponent
. preferredLayoutSize
. minimumLayoutSize
106 neLoCode
+ 4 LoComm