applet布局问题一直都是JAVA培训课程中的比较重要的知识点,那按钮、标签是怎样加入到applet程序(容器)当中去的呢? 需要用到布局容器管理器(LayoutManager):它用于协助容器确定加入的组件(按钮等)应该放置的位置 awt提供了4中常用的布局容器管理器 >>FlowLayout >>BorderLayout >>GridLayout >>CardLayout applet默认使用FlowLayout,applet使用容器管理器的方法如下: setLayout (new BorderLayout) setLayout()方法是applet类继承Container类中的方法而来,因此在applet程序中可以直接调用 applet加入按钮一定需要上面的容器管理器么? 不一定,可以先 setLayout(null); 然后自己确定组件放置的细节,代码麻烦。 如果你不用布局管理器(Jframe中的用法): JButton b1 = new JButton("hello"); getContentPane().add(b1); b1.setLocation(100,10); 以下是容器管理器常用的4种布局写法 ================================================= applet 使用 FlowLayout 布局: 指定布局:setLayout(new FlowLayout()) 加入组件:add(组件实例) 作用:由左到右,由上到下依次放置组件 加入组件使用applet类继承Container类中的方法成员add(); ================================================= import java.awt.*; import java.applet.*; public class UseFlowLayout extends Applet{ public void init() { setLayout(new FlowLayout()); //因为是默认管理器,可以省略 //setLayout()方法是applet类继承Container类中的方法而来,因此在applet程序中可以直接调用 for(int i = 0; i<5;i++){ add(new Button("按钮" + i )); //加入5个按钮 //applet类继承Container类中的方法成员add(); } } } ================================================== applet使用BorderLayout(); 指定布局:setLayout(new BorderLayout()); 加入组件:add(组件实例,位置常量) 作用:此种布局将容器划分为5个区域,分别是上、下、左、右、中 [位置常量]指定了组件将要放置的位置, 如果组件不足5个,放在中间位置的组件将自动填充空余位置 ================================================== import java.awt.*; import java.applet.*; public class UseBorderLayout extends Applet{ //接口Applet public void init() { setLayout(new BorderLayout()); //因为是默认管理器,可以省略 add(new Button("按钮上"),BorderLayout.NORTH); add(new Button("按钮右"),BorderLayout.EAST); //?setHgap(50);想设置组件的水平和垂直的边距,看下面的GridLayout使用方法 add(new Button("按钮中"),BorderLayout.CENTER); //add(new Button("按钮下"),BorderLayout.SOUTH) //引上是为了测试自动填充效果 //add(new Button("按钮左"),BorderLayout.WEST) //引上是为了测试自动填充效果 } } ================================================== applet使用GridLayout(); 指定布局:setLayout(new GridLayout(列数,行数)) 加入组件:add(组件实例) 作用:左-->右,上-->下,分成指定的网格 ================================================== import java.awt.*; import java.applet.*; public class UseGridLayout extends Applet{ //接口Applet public void init() { //setLayout(new GridLayout(3,4)); //书上的写法,我的写法如下: //声明一个布局管理器:为表格形式 3行 4列 GridLayout GL = new GridLayout(3,4); GL.setHgap(20); //设置组件的水平和垂直的边距 GL.setVgap(20); this.setLayout(GL); //是哪个类对象的方法?!是this:当前applet //加入按钮 for(int i=0;i<12;i++) { this.add(new Button("按钮" + i)) ; //add方法是哪个类对象的?!也是当前面板的方法 } } } ========================================================= +applet使用 CardLayout容器管理器 指定容器管理器:setLayout(new CardLayout()) 加入组件:add(组件实例,"指定组件名称") 显示组件:CL.show(this."button1"),next,previous,first 作用:组件加入容器applet中,然后按照需要调出,被调出的组件遮盖本容器内的所有组件 。。。注意,applet是容器,但不是唯一的,applet还可以加入多个容器!详细内容明天再学 ========================================================= import java.awt.*; import java.applet.*; public class UseCardLayout extends Applet{ //接口Applet public void init() { //指定当前applet布局管理器为CardLayout. CardLayout CL = new CardLayout(); setLayout(CL); //加入按钮 for(int i=0;i<12;i++) { add(new Button("按钮" + i),"button" + i) ; } CL.show(this,"button11"); //将指定按钮显示出来 CL.next(this); //转到下一个按钮,这里说明循环显示的效果,显示出是button0; //还有CL.first(this)等方法==如:last,previous,next,first,显示指定的就用上面的方法 } } 以上是applet作为容器,需要用到的最常用的组件布局办法 实际上一个容器还可以使用多个LayoutManager, 用Panel! Panel属于awt组件的容器类,也就是说它可以用来放置其他的awt组件, 她的重要特点就是:拥有独立的坐标系统和layoutmanager. Panel 与 LayoutManager结合可以做出更符合需要的applet界面! ---附applet测试页面 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> </HEAD> <BODY> <applet code="UseBorderLayout.class" width=400 height=300></applet> </BODY> </HTML> 红色部分替换成相应的布局类 |
|
来自: 昵称15907169 > 《JAVA》