java GUI编程之布局控制器(Layout)实例分析
程序员文章站
2022-07-02 09:25:51
本文实例讲述了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即同样的大小名称等,其终究还是哪一个,当其被反复添加时,仅仅是相当于给其换了位置。其和变量不同,并不是单纯的复制,而是内存和对象的指向问题。