小木虫 | 小木虫论坛 | 木虫之家 | 论文范文 | 期刊查询 | 影响因子 | 新闻导读 | 学术网址之家


当前位置:小木虫范文 >> JAVA指导 >> Java初级入门教程(三)

赞助商链接

Java初级入门教程(三)


作者: 网络转载    发布日期: 无

  在本次教程中,偶讲一下在JDK组件布局管理器的使用方法。在JAVA中一共有7种布局方式:流式布局,网格布局,边界布局,卡面布局,网格包布局,盒式布局,自定义布局,它们是AWT包提供的。


  布局管理器


  ·流式布局(FlowLayout)是JAVA小应用程序默认的布局管理方式,它是按组件加入容器的次序,按行一个按一个放置组件,当组件达到Applet右边界时,它就在下一行开始放置组件。在缺省状态下,FlowLayout管理器使组件对准每一行的中心。

  ·网络布局(GridLayout)是最简单的布局管理器,它把容器分成所需要的矩形网格,然后把你创建的组件放入每个格式,从左到右,自上向下的放置。

  ·边界布局(BorderLayout)管理器让你按东,南,西,北,中的方向来安置组件。

  ·卡片布局(CardLayout)管理器是创建如卡面盒之类的布局盒,然后从一种布局翻动到另一种布局。它形象的模拟了现实生活某些实例,如一个盒子里放置了许多东西,假设盒子只有一个口,那么你永远只能看到最上面的物件,只有当你拿走上面的物件后,下面的物件才会显示出来。就这样一层一层往下翻动,如此循环不休,一层一层的往下翻。

  ·盒式布局(BoxLayout)管理器跟卡面布局有些相似,不过它允许你在容器中水平或垂直的、并排的安排多个组件。

  ·网格包型(GridBagLayout)布局管理器是AWT提供的最灵活,最复杂,最常用的布局管理器之一,类似于网格布局,但它允许你把组件放在网格中任何行或列,也允许你的组件跨多行或多列。它是通过设置GridBagConstraints对象中的变量来约束组件布局的。

  ·自定义布局(null)管理器是通过组件本身的setBounds()方法来设置组件在容器中的位置,是最常用的布局管理器之一,相对于网格包型而言,还是非常简单的,只不过需要计算每个组件大小以及容器位置。

  对于上面7种布局,偶不可能一一举例,那就以最常用的下面两种布局方式来跟大家介绍一下布局管理器,首先是网格包型。

  网格包型布局方式,就是通过设置GridBagConstraints对象中的一些参数来达到有序的安排组件的效果,GridBagConstraints有:gridwidth,gridheight,anchor,fill,gridx,gridy,weightx,weighty等属性,通过给这些赋不同的值来改变组件排放位置。

  gridwidth,gridheight指出组件的大小等它显示区域的大小,缺省值为1,可以修改这两个值来扩大组件的显示区域。但要注意的是,如果显示区域区域大小增加了,组件本身的大小是不会增加的。

  anchor属性是显示区域内确定放置组件位置。其有效值为东,南,西,北,中,东南,东北,西南,西北,默认为中。

  fill表示当组件小于它的显示区域时,设置它的填充方式。缺省为NONE(空),可以选择HORIZONTAL(水平)、VERTICAL(垂直)和BOTH。


  gridx,gridy为放置组件的网格行与列。对于网格最左边为0列,最顶部为0行。

  weightx,weighty决定组件是否需要拉伸以水平(weightx)或垂直(weighty)填入显示区域,缺省都为0。

  下面我们把连载二中的小应用程序改一下,使它能按我们通过网格包型布局管理方式,设置排列方式:

  import javax.swing.*; //导入Swing包,否则无法使用下面组件

  public class AcceptData extends JApplet //通过关键字extends继承小应用程序类


  {


  static JPanel panelObj; //定义面板,用于放置组件


  //定义标签,用于提示客户输入信息


  JLabel lblCustName;


  JLabel lblCustCellNo;


  JLabel lblCustCountry;


  JLabel lblCustAge;


  //定义文本编辑框,用于接收客户输入


  JTextField txtCustName;


  JTextField txtCustCellNo;


  JTextField txtCustAge;


  //定义组合框,提供可选择的选项


  JComboBox cboCustCountry;


  GridBagLayout gbObject; //定义布局管理器对象


  GridBagConstraints gbc; //定义网格包型约束方式


  public void init() //通过构造方法初始化组件


  {


  gbObject=new GridBagLayout();


  gbc=new GridBagConstraints();


  panelObj=new JPanel();


  getContentPane().add(panelObj); // 把面板加入到框架中




  //初始化标签


  lblCustName=new JLabel("客户名字: ");


  lblCustCellNo=new JLabel("电话号码: ");


  lblCustCountry=new JLabel("客户国籍: ");


  lblCustAge=new JLabel("客户年龄: ");


  //初始化编辑框


  txtCustName=new JTextField(12);


  txtCustCellNo=new JTextField(12);


  txtCustAge=new JTextField(2);


  //初始化组合框


  String strCountry[]={"China","U.S.A."};


  cboCustCountry=new JComboBox(strCountry);




  //将组件通过布局管理器设置后添加到面板上


  gbc.anchor = GridBagConstraints.NORTHWEST;


  gbc.gridx=1;


  gbc.gridy=5;


  gbObject.setConstraints(labelCustName,gbc);


  panelObject.add(labelCustName);


  gbc.gridx=4;


  gbObject.setConstraints(textCustName,gbc);


  panelObject.add(textCustName);


  gbc.gridx=1;


  gbc.gridy=8;


  gbObject.setConstraints(labelCustCellNo,gbc);


  panelObject.add(labelCustCellNo);


  gbc.gridx=4;


  gbObject.setConstraints(textCustCellNo,gbc);


  panelObject.add(textCustCellNo);


  gbc.gridx=1;


  gbc.gridy=11;


  gbObject.setConstraints(labelCustPackage,gbc);


  panelObject.add(labelCustPackage);


  gbc.gridx=4;


  gbObject.setConstraints(comboCustPackage,gbc);


  panelObject.add(comboCustPackage);


  gbc.gridx=1;


  gbc.gridy=14;


  gbObject.setConstraints(labelCustAge,gbc);


  panelObject.add(labelCustAge);

  gbc.gridx=4;


  gbObject.setConstraints(textCustAge,gbc);


  panelObject.add(textCustAge,gbc);


  }


  }


  行了,到这里大家就可以编译运行了,请注意了这是小应用程序,还要编写一个网页文件来把它嵌入才可以运行哦!


  下面我来介绍另一种布局最常用的布局管理器——自定义布局:

  大部分组件都有一个setBounds(int,int,int,int)属性,它有4个参数,分别表示组件在窗口中的位置与大小。比如我们建立一个按钮button,需要它在50行,60列位置显示,它的长为80,宽为30,那么就用button.setBounds(50,60,80,30)就OK啦!是不是很简单呢?这种方式相对于网格包来简单不少,但需要计算组件在窗口中的位置也是一件比较麻烦的事,不过别怕,我们是为了学习才这么做的,以后设计程序时,完成可以用可视化来完成的!

  本次连载就简单的介绍了一下布局管理器的应用了,下回我们来讲事件处理。
特别提示:本文内容从INTERNET网络中整理所得,小木虫范文为个人免费站点,仅提供展示平台,不对该内容负责。欢迎协助我们监督管理,如果您对该内容有异议,请立即发邮件联系通知管理员,我们保证在1个工作日内给予删除等处理。




小木虫,学术科研第一站,为中国学术科研研究提供免费动力
欢迎监督,发现不妥请立即联系管理员
京ICP备05001187号