在AWT中,有五種布局管理器分别是:
BorderLayout
FlowLayout
GridLayout
CardLayout
GridBagLayout
先看看代碼
import java.awt.Button;
import java.awt.Color;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class MyFrame implements WindowListener{
public static void main(String []args)
{
Frame f=new Frame("zhycheng");
f.setSize(300, 400);
f.setLocation(400, 300);
f.setBackground(Color.CYAN);
f.setLayout(new BorderLayout(10,10));
//f.setLayout(new FlowLayout(FlowLayout.RIGHT));
//f.setLayout(new GridLayout(3,2,10,10));
Button btn=new Button("winsun");
f.add(btn,"Center");
Button btn1=new Button("north");
f.add(btn1,"North");
Button btn2=new Button("South");
f.add(btn2,"South");
Button btn3=new Button("West");
f.add(btn3,"West");
Button btn4=new Button("East");
f.add(btn4,"East");
f.setVisible(true);
f.addWindowListener(new MyFrame());
}
@Override
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
@Override
public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub
}
}1.BorderLayout
BorderLayout将Frame分為5部分,Center,North,South,West,East。BorderLayout也是Frame的預設的布局。
f.setLayout(new BorderLayout(10,10));其中的兩個10分别表示元件之間的水準間隙和垂直間隙
效果如圖
2.FlowLayout
FlowLayout是流式布局,将元件依次擺放
f.setLayout(new FlowLayout(FlowLayout.RIGHT));中的參數是右對齊。當然,也有左對齊,預設居中
效果如下
3.GridLayout
GridLayout是網格布局,将容器分為網格。
f.setLayout(new GridLayout(3,2,10,10));将容器分為3行2列,格子之間的水準和垂直間隙都為10.
效果如下
4.CardLayout
CardLayout可以實作翻牌的效果。CardLayout對象的next()方法來實作代碼有所改動,是以我将全部的代碼都貼出來
import java.awt.Button;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class MyFrame implements WindowListener{
public static void main(String []args)
{
final Frame f=new Frame("zhycheng");
f.setSize(300, 400);
f.setLocation(400, 300);
f.setBackground(Color.CYAN);
//f.setLayout(new BorderLayout(10,10));
//f.setLayout(new FlowLayout(FlowLayout.RIGHT));
//f.setLayout(new GridLayout(3,2,10,10));
final CardLayout cl=new CardLayout();
f.setLayout(cl);
ActionListener al=new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
cl.next(f);
}};
Button btn=new Button("winsun");
btn.addActionListener(al);
f.add(btn,"Center");
Button btn1=new Button("north");
btn1.addActionListener(al);
f.add(btn1,"North");
Button btn2=new Button("South");
btn2.addActionListener(al);
f.add(btn2,"South");
Button btn3=new Button("West");
btn3.addActionListener(al);
f.add(btn3,"West");
Button btn4=new Button("East");
btn4.addActionListener(al);
f.add(btn4,"East");
f.setVisible(true);
f.addWindowListener(new MyFrame());
}
@Override
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
@Override
public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub
}
}
效果如圖