swing 7

本文介绍了Swing中的布局管理器,重点讲解BoxLayout布局管理器的使用方法,包括组件的排列方式及其设置过程。此外还介绍了Swing与AWT的区别及Swing的新特性。

 

7.2.4 布局管理器

  和AWT相同,为了容器中的组件能实现平台无关的自动合理排列,Swing也采用了布局管理器来管理组件的排放、位置、大小等布置任务,在此基础上将显示风格做了改进。

  另外一个不同点在于Swing虽然有顶层容器,但是我们不能把组件直接加到顶层容器中,Swing窗体中含有一个称为内容面板的容器(ContentPane),在顶层容器上放内容面板,然后把组件加入到内容面板中,前面已讲过如何得到和设置内容面板。

  所以,在Swing中,设置布局管理器是针对于内容面板的,另外Swing新增加了一个BoxLayout布局管理器。显示上与AWT略有不同,如下图所示:

          
 
    





  现在简单介绍一下BoxLayout布局管理器

  BoxLayout布局管理器按照自上而下(y轴)或者从左到右(x轴)的顺序布局依次加入组件。建立一个BoxLayout对象,必须指明两个参数:被布局的容器和BoxLayout的主轴。缺省情况下,组件在纵轴方向上居中对齐。

  设置布局管理器的方法如下:
  pane.setLayout(new BoxLayout(pane,BoxLayout.Y-AXIS));

        

  JScrollPane listScroller=new JScrollPane(list);
  listScroller.setPreferredSize(new Demension(250,80));
  listScroller.setMinimumSize(new Dimension(250,80));
  listScroller.setAlignmentX(LEFT_ALIGNMENT);
  ……
  //从上到下设置标签和滚动板.
  JPanel listPane=new JPanel();
  listPane.setLayout(new BoxLayout(listPanae,BoxLayout,Y_AXIS));
  JLabel label=new JLabel(labelText);
  listPane.add(label);
  listPane.add(Box.createRigidArea(new Demension(0,5)));
  listPane.add(listScroller);
  listPane.setBorder(BorderFactory.creatEmptyBorder(10,10,10,10);
  //从左到右设置按钮
  JPanel buttonPane=new JPanel();
  buttonPane.setLayout(new BoxLayout(buttonPane,Boxlayout.X_AXIS));
  buttonPane.setBoder(BorderFactory.createEmptyBorder(0,10,10,10));
  buttonPane.add(Box.createHorizontalGlue());
  buttonPane.add(cancelButton);
  buttonPane.add(Box.createRigiArea(new Dimension(10,0)));
  buttonPane.add(setButton);
  Container contentPane=getContentPane();
  contentPane.add(listPane,BorderLayout.CENTER);
  contentPane.add(buttonPane,BorderLayout.SOUTH);

【本讲小结】

  对于AWT而言,Java 1.1到Java 1.2最大的改变就是Java中所有的库。当Java 1.1版纳入新的事件模型和Java Beans时,平台被设置--现在它可以被拖放到可视化的应用程序构建工具中,创建GUI组件。另外,事件模型的设计和Bean无疑对轻松的编程和可维护的代码都非常有益。对于Swing组件而言,交叉平台GUI编程可以变成一种有意义的尝试。

  本章主要介绍了一些Swing的新特性,它和AWT相比有哪些不同的方法和应用,着重阐述了Swing的特色组件和容器,并以图形的形式给出具体描述,同时介绍了组件的分类,使用Swing的基本规则,各种容器面板以及布局管理器,由于Swing是Java2新增特性, 它对图形化用户界面提供了庞大而复杂的类库支持,要能做到开发和实用,还需做大量工作,利用API的帮助,逐步深入摸索其规律,从组件和容器入手,掌握其特色方法。从另一角度来看,Swing和AWT无论是布局管理器还是事件处理机制,以及对一些重量容器的保留和使用,都是我们非常熟悉的内容,其原理我们已在AWT一章做了详细介绍,因此,AWT作为Swing的基础,是需要很好掌握的,希望大家能在不断设计应用中摸索出新方法和新技巧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值