Swing开发过程中,或使用一些布局管理器,常用的布局管理器有Borderlayout,Flowlayout,Boxlayout等,当满足不了需求时,我们可以自定义布局管理器。
本示例说明三个空间的位置,使用时,依次添加组件即可:
class MapLayout implements LayoutManager {
@Override
public void addLayoutComponent(String name, Component comp) {
}
@Override
public void removeLayoutComponent(Component comp) {
}
@Override
public Dimension preferredLayoutSize(Container parent) {
synchronized (parent.getTreeLock()) {
Dimension dim = new Dimension(parent.getSize());
return dim;
}
}
@Override
public Dimension minimumLayoutSize(Container parent) {
synchronized (parent.getTreeLock()) {
Dimension dim = new Dimension(1, 1);
return dim;
}
}
@Override
public void layoutContainer(Container parent) {
synchronized (parent.getTreeLock()) {
Component u = parent.getComponent(0);
Component d = parent.getComponent(1);
Component l = parent.getComponent(2);
u.setBounds(
parent.getSize().width - u.getPreferredSize().width, 0,
u.getPreferredSize().width, u.getPreferredSize().height);
d.setBounds((parent.getSize().width - 900) / 2,
parent.getSize().height - d.getPreferredSize().height
- 20, 900, d.getPreferredSize().height);
int y = (parent.getSize().height - showParamImage
.getIconHeight()) / 2;
if (y <= 350) {
y = 350;
}
l.setBounds(0, y, showParamImage.getIconWidth(),
showParamImage.getIconHeight());
}
}
}