JPanel和JFrame之间的联系:

(JPanel)Panel是一个轻量级的容器,由于不是顶级的容器,故其必须放在(JFrame)Frame等高级容器上,这样就可以在一个Frame(JFrame)上通过Panel和五种界面布局管理器来构建复杂的应用程序界面。

下面来介绍一下五种界面布局管理器:

1、  FlowLayout:

流式布局用于安排有向流中的组件,流的方向取决于容器的componentOrientation属性,它可能是以下两个值中的一个:componentOrientation.LEFT_TO_RIGHT或componentOrientation.RIGHT_TO _­­ LEFT

流布局一般用于安排面板中的按钮。它使得按钮呈水平放置,直到同一条线上再也没有合适的按钮。

2、  BorderLayout

这是一个布置容器的边框布局,它可以对容器组件进行安排,并调整其大小,使其符合下列五个区域:北、南、东、西、中。每个区域最多只能包含一个组件,并通过相应的常量进行标识:NORTH 、SOUTH 、EAST 、WEST 、CENTER。当使用边框布局将一个组件添加到容器中时,要使用五个常量之一,eg:

JPanel panel = new JPanel();

panel.setLayout(new BorderLayout());

panel.add(new Button(“Clear”),BorderLayout.NORTH);

3、  GridLayout:

GridLayout类是一个布局处理器,它以矩形网格形式对容器的组件进行布置。容器被分为大小相等的矩形,一个矩形中放置一个组件。

例如,下面是一个将六个按钮布置到三行两列中的 applet:


 importjava.awt.*;

 importjava.applet.Applet;

 public classButtonGrid extends Applet {

     public voidinit() {

        setLayout(new GridLayout(3,2));

         add(newButton("1"));

         add(newButton("2"));

         add(new Button("3"));

         add(newButton("4"));

         add(newButton("5"));

         add(newButton("6"));

     }

 }

 


通过构造方法或 setRows 和 setColumns 方法将行数和列数都设置为非零值时,指定的列数将被忽略。列数通过指定的行数和布局中的组件总数来确定。因此,例如,如果指定了三行和两列,在布局中添加了九个组件,则它们将显示为三行三列。仅当将行数设置为零时,指定列数才对布局有效。

4、 CardLayout

CardLayout对象是容器的布局管理器。它将容器中的每个组件看作一张卡片。一次只能看到一张卡片,容器则充当卡片的堆栈。当容器第一次显示时,第一个添加到CardLayout对象的组件为可见组件。

卡片的顺序由组件对象本身在容器内部的顺序决定。CardLayout定义了一组方法,这些方法允许应用程序按顺序地浏览这些卡片,或者显示指定的卡片。addLayoutComponent(java.awt.Component,java.lang.Object)方法可用于将一个字符串标识符与给定卡片关联,以便进行快速随机访问。

5、 BoxLayout:

允许垂直或水平布置多个组件的布局管理器。这些组件将不包装,因此举例来说,垂直排列的组件在重新调整框架的大小时仍然被垂直排列。(此布局由于还未怎么使用过,详细之处就不再介绍,详情可参考API文档)
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐