欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java GUI编程之布局控制器(Layout)实例分析

程序员文章站 2022-03-28 16:05:38
本文实例讲述了java gui编程之布局控制器(layout)。分享给大家供大家参考,具体如下: 布局控制器,是用来系统自动分配各个component在window内部是怎么排布的;...

本文实例讲述了java gui编程之布局控制器(layout)。分享给大家供大家参考,具体如下:

布局控制器,是用来系统自动分配各个component在window内部是怎么排布的;默认为flowlayout,即挨个排序。flowlayout是panel的

instance 1:flowlayout

import java.awt.*;
public class testlayout {
 public static void main(string[] args) {
 frame f = new frame();
 button b1 = new button("ok");
 button b2 = new button("open");
 button b3 = new button("change");
 f.setbackground(color.blue);
 f.setbounds(100, 100, 300, 300);
 f.setlayout(new flowlayout());
 f.setresizable(true);
 f.add(b1);
 f.add(b2);
 f.add(b3);
 f.setvisible(true);
 }
}

instance 2:borderlayout

import java.awt.*;
public class testborderlayout {
 public static void main(string[] args) {
 frame f = new frame("border layout");
 button bn = new button("bn");
 button bs = new button("bs");
 button be = new button("be");
 button bw = new button("bw");
 button bc = new button("bc");
 
// f.add(bw,"west");
// f.add(be,"east");
// f.add(bn,"north");
// f.add(bs,"south");
// f.add(bc,"center");
// f.setlayout(new bordorlayout());
 f.add(bn,borderlayout.north);
 f.add(bs,borderlayout.south);
 f.add(bw,borderlayout.west);
 f.add(be,borderlayout.east);
 f.add(bc,borderlayout.center);
 
 f.setsize(200, 200);
 f.setvisible(true);
 }
}

borderlayout把整个界面划分为东西南北中五个区域块;其中borderlayout.north等是int类型的数据,为一个常量。

instance 3:gridlayout

import java.awt.*;
public class testgridlayout {
 public static void main(string[] args) {
 frame f = new frame();
 button b1 = new button("b1");
 button b2 = new button("b2");
 button b3 = new button("b3");
 button b4 = new button("b4");
 button b5 = new button("b5");
 button b6 = new button("b6");
 f.setlayout(new gridlayout(3,2));
 
 f.add(b1);
 f.add(b2);
 f.add(b3);
 f.add(b4);
 f.add(b5);
 f.add(b6);
 f.pack();
 f.setsize(200, 200);
 f.setvisible(true);
 }
}

注:当调用layout后,其内部的component的大小和位置由系统(布局管理器自主分配),而无法认为的设计。而pack()方法是用来显示各个组件的。

instance 4:综合实例

import java.awt.*;
public class testedlayout {
 public static void main(string[] args) {
 frame f = new frame("gui");
 f.setlayout(new gridlayout(2,1));
 panel p1 = new panel(new borderlayout());
 panel p2 = new panel(new borderlayout());
 panel p11 = new panel(new gridlayout(2,1));
 panel p22 = new panel(new gridlayout(2,2));
 button b1 = new button("button");
 button b2 = new button("button");
 button b3 = new button("button");
 button b4 = new button("button");
 button b5 = new button("button");
 button b6 = new button("button");
 button b7 = new button("button");
 button b8 = new button("button");
 button b9 = new button("button");
 button b10 = new button("button");
 p1.add(b1,borderlayout.west);
 p1.add(b2,borderlayout.east);
 p2.add(b3,borderlayout.west);
 p2.add(b4,borderlayout.east);
 p11.add(b5);
 p11.add(b6);
 p22.add(b7);
 p22.add(b8);
 p22.add(b9);
 p22.add(b10);
 p1.add(p11,borderlayout.center);
 p2.add(p22,borderlayout.center);
 f.add(p1);
 f.add(p2);
 f.setbounds(100, 100, 400, 400);
 f.setvisible(true);
 
 }
}

注:一个new等于创建了一个button对象,分配了一个内存空间。即使是完全相同的button即同样的大小名称等,其终究还是哪一个,当其被反复添加时,仅仅是相当于给其换了位置。其和变量不同,并不是单纯的复制,而是内存和对象的指向问题。