当前位置: 移动技术网 > IT编程>开发语言>Java > java GUI编程之布局控制器(Layout)实例分析

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

2020年03月09日  | 移动技术网IT编程  | 我要评论

本文实例讲述了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即同样的大小名称等,其终究还是哪一个,当其被反复添加时,仅仅是相当于给其换了位置。其和变量不同,并不是单纯的复制,而是内存和对象的指向问题。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网