java学习——52.网格布局
网格布局类似于以表格的形式,将组件放在一个个的单元格中。
GridLayout网格布局管理器将容器划分为大小相等的若干行乘若干列的网格,组件大小随容器大小而变化。
GridLayout类声明如下:
public class GridLayout implements LayoutManager, Serializable
{
public GridLayout(int rows, int cols)//参数指定行、列
}
此种方式布局时,组件的布放次序是行优先,从第一行开始,从左至右依次放置。
如果组件数超过网格数,则自动增加。
如果组件数低于网格数,则多余的网格为空。
设置此布局同样是在窗口中用方法setLayout()设置,详见例题。
例:
import java.awt.*;
import java.awt.event.*;
public class Login extends Frame{
public static void main(String args[]){
Login l=new Login();
l.setTitle("计算器");
l.setSize(200,200);
l.setLocation(200,200);
l.setVisible(true);
l.setResizable(false);
l.setLayout(new GridLayout(4,4));
Label label=new Label("请输入:");
l.add(label);
TextField t=new TextField(10);
l.add(t);
Button b1=new Button("1");
Button b2=new Button("2");
Button b3=new Button("3");
Button b4=new Button("4");
Button b5=new Button("5");
Button b6=new Button("6");
Button b7=new Button("7");
Button b8=new Button("8");
Button b9=new Button("9");
Button b10=new Button("0");
l.add(b1);
l.add(b2);
l.add(b3);
l.add(b4);
l.add(b5);
l.add(b6);
l.add(b7);
l.add(b8);
l.add(b9);
l.add(b10);
Button b=new Button("确定");
l.add(b);
l.addWindowListener(new WinClose());
}
}
class WinClose implements WindowListener{
public void windowClosing(WindowEvent ev){
System.exit(0);
}
public void windowOpened(WindowEvent ev){}
public void windowActivated(WindowEvent ev){}
public void windowDeactivated(WindowEvent ev){}
public void windowClosed(WindowEvent ev){}
public void windowIconified(WindowEvent ev){}
publicvoid windowDeiconified(WindowEvent ev){}
}
其运行结果如下:
可为其指定组件间水平和垂直间距,如果将上例的布局代码l.setLayout(new GridLayout(4,4));改为l.setLayout(newGridLayout(4,4,10,10));
其运行结果如下: