布局
为了更好适应不同平台而引入的概念。
Java的布局管理器是一个实现了LayoutManager接口的实例。用户无法设置setLocation()这些方法。如果想自己设置则需要取消布局管理器。
采用布局管理器:
- 边界布局
- 顺序布局
- 网格布局
- 卡片布局
…
这些相关的类都在Java.awt包中。
不使用布局管理器
public static void main(String[] args) {
JFrame frm=new JFrame("lalalalalal");
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//不使用布局管理器
frm.setLayout(null);
}
使用边界管理器
边界管理器将窗体分为了上、中、下、左、右,这五个部分。相信对前端有所了解的同学对这个印象可能比较深。
采用BorderLayout实现
五个方向的
public static void main(String[] args) {
JFrame frm = new JFrame("lalalalalal");
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 使用边界布局管理器
frm.setLayout(new BorderLayout());
JLabel a = new JLabel("TOP");
a.setHorizontalAlignment(JLabel.HORIZONTAL);
JLabel b = new JLabel("SOUTH");
a.setHorizontalAlignment(JLabel.HORIZONTAL);
JLabel c= new JLabel("WEST");
a.setHorizontalAlignment(JLabel.HORIZONTAL);
JLabel d = new JLabel("EAST");
a.setHorizontalAlignment(JLabel.HORIZONTAL);
JLabel e = new JLabel("CENTER");
a.setHorizontalAlignment(JLabel.HORIZONTAL);
frm.add(a, BorderLayout.NORTH);
frm.add(b, BorderLayout.SOUTH);
frm.add(c, BorderLayout.WEST);
frm.add(d, BorderLayout.EAST);
frm.add(e, BorderLayout.CENTER);
frm.setBounds(450, 230, 400, 200);
frm.setVisible(true);
}
使用卡片布局
由CardLayout实现。
卡片布局将窗体分为若干层-------想象蜘蛛纸牌。
public static void main(String[] args) {
JFrame frm = new JFrame("lalalalalal");
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 使用边界布局管理器
frm.setLayout(new CardLayout());
//创建六个组件
JLabel la1=new JLabel("hhhh");
JLabel la2=new JLabel("稍微u和");
JLabel la3=new JLabel("威风威风");
JLabel la4=new JLabel("藕孔");
JLabel la5=new JLabel("额外服务");
JLabel la6=new JLabel("威锋网");
//将组件添加到容器中
frm.add(la1,"one");
frm.add(la2,"two");
frm.add(la3,"three");
frm.add(la4,"four");
frm.add(la5,"five");
frm.add(la6,"six");
//显示指定卡片,设置显示顺序
// cardlayout.show(frm.getContentPane(),"one");
frm.setBounds(450, 230, 400, 200);
frm.setVisible(true);
}