美文网首页
日志8.24:布局管理器

日志8.24:布局管理器

作者: 莫唁 | 来源:发表于2015-08-24 04:19 被阅读167次

    本来想昨晚把布局管理器复习完之后放到日志上,以为差不多可以掌握了,突然发现一开始写代码就各种不会,以至于写到现在才只能做出最简单的界面,所以说以后还是要多敲敲代码,巩固下所学的知识,任重道远啊!废话不多说,开始总结:


    1.java界面开发主要步骤:继承JFrame——定义组件——创建组件——添加组件——设置窗体属性——显示窗体

    2.java.awt类包中包含五种布局管理器:

    1.流式布局管理器(FlowLayout):Pannel和Applet的缺省布局管理器;

    2.边界布局管理器(BorderLayout):window、JDialog、Dialog、Frame、JFrame的缺省布局管理器;

    3.网格布局管理器(GridLayout);

    4.卡片布局管理器(CardLayout);

    5.网格包布局管理器(GridBagLayout);

    3.如果用户确实需要设置组件的大小和位置,则应取消该容器的布局管理器。方法为:setLayout(null);

    4.FlowLayout布局方式是将组件一排一排地依次放置。它自动调用组件的getPrefferredSize()方法,使用组件的最佳尺寸来显示组件。当容器被重新设置大小后,则布局也会重新发生改变:各组件的大小不变,但相对位置会发生变化

    5.FlowLayout有三种构造方法:

    1.public FlowLayout()

    使用缺省居中对齐方式。组件的水平和垂直间距为缺省值5个像素

    2.public FlowLayout(int alignment)

    使用指定的对齐方式。

    3.public FlowLayout(int alignment,int horizontalGap,int verticalGap)

    使用指定的对齐方式,水平和垂直间距为指定值。

    6.BorderLayout布局使用了更加复杂的布局控制方法,它包括五个区域:NORTH、SOUTH、EAST、WEST、CENTER。当容器尺寸发生变化时,各组件的相对位置不变,但中间部分的尺寸会发生变化,南北组件的高度不变,东西组件的宽度不变。

    7.BorderLayout类中有两种构造方法:

    1.public BorderLayout()

    各组件的水平和垂直间距为缺省值0个像素。

    2.public BorderLayout(int horizontalGap,int verticalGap)

    各组件的水平和垂直间距为指定像素。

    8.如果容器中使用了BorderLayout布局方式,则用add()方法往容器添加组件时,要指明添加的位置,若无指明,则默认为"CENTER"方位。例:add (new Button(BorderLayout.WEST)。

    9.每个区域只能添加一个组件,若添加多个组件,则只能显示一个。如果想在组件中添加多个组件。则必须在该区域内放置一个Pannel容器,再将多个组件放在该Pannel容器中。

    10.GridLayout布局方式可以使容器中的各个组件呈网格状分布。容器中各组件的宽度和高度相同。当容器的尺寸发生变化时,各组件的相对位置不变,但各自的尺寸会发生变化。

    11.GridLayout布局方式有三种构造方法:

    1.public GridLayout()

    在一行中放置所有的组件,各组件间的水平和垂直间距为0像素;

    2.public GridLayout(int rows,int cols)

    rows和cols可以有一个为0。若rows为0,则表示每行放置cols个组件,根据具体的组件,可以有任意多行;若cols为0,这表示共有rows行,根据具体的组件数,每行可以放任意多个组件;

    3.public GridLayout(int rows,int cols,int horizontalGap,int verticalGap)

    各组件的水平和垂直间距为指定值。

    12.CardLayout可以帮助用户处理两个或更多的组件共享同意显示空间。只有最上面的组件是可见的。

    13.CardLayout可以像换牌一样处理共享空间的组件:为每张牌定义一个名字,可按名字选牌;可以按顺序向前或向后翻牌;也可以直接选第一张或最后一张牌。使用方法如下:

    public void show(Container parent,String name)

    public void next(Container parent)

    public void previous(Container parent)

    public void first(Container parent)

    public void last(Container parent)

    其中Container是拥有该CardLayout布局管理器的容器

    14.CardLayout有两种构造方法:

    1.public CardLayout()

    组件距容器的左右和上下边界的距离为缺省值0像素;

    2.public CardLayout(int horizontalGap,int verticalGap)

    组件距容器的左右和上下边界的距离为指定像素。

    15.采用Layout布局方式时,向容器中添加组件时可以为组件取一个名字,以供更换显示组件时使用:add(String Component)。


    总结的内容差不多了,但是具体组件的用法没有标出来,下面再写一些令我熬夜的代码吧,稍微复杂些的内容将在明天补充:


    1.最简单的布局方式,如下图:

    代码如下:

    步骤:1.继承JFrame;2.定义组件;3.创建组件;4.添加组件;5.设置窗体属性;6.显示窗体。

    import java.awt.*;

    import javax.swing.*;

    //继承JFrame

    public class Demo extends JFrame

    {

    //定义组件

    JPanel jp1,jp2;

    JButton jbs[]=new JButton[6];

    //创建构造函数

    public Demo()

    {

    //创建组件

    for(int i=0;i<6;i++)      //对象数组在定义数组后,需对数组成员重新定义

        jbs[i]=new JButton();

    jp1=new JPanel();

    jp2=new JPanel();

    jbs[0]=new JButton("苹果");

    jbs[1]=new JButton("西瓜");

    jbs[2]=new JButton("狐狸");

    jbs[3]=new JButton("葡萄");

    jbs[4]=new JButton("樱桃");

    jbs[5]=new JButton("荔枝");

    //添加组件

    jp1.add(jbs[0]);

    jp1.add(jbs[1]);

    jp2.add(jbs[2]);

    jp2.add(jbs[3]);

    jp2.add(jbs[4]);

    //设置布局管理器

    this.setLayout(new BorderLayout());     //经常出错,请记住

    this.add(jp1,BorderLayout.NORTH);

    this.add(jp2,BorderLayout.SOUTH);

    this.add(jbs[5],BorderLayout.CENTER);

    //设置窗体属性

    this.setSize(300,200);

    this.setLocation(40,40);

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //显示窗体

    this.setVisible(true);

    }

    //主函数

    public static void main(String args[])

    {

    Demo demo=new Demo();

    }

    }


    待续......(补充至下一篇)

    相关文章

      网友评论

          本文标题:日志8.24:布局管理器

          本文链接:https://www.haomeiwen.com/subject/uznxcttx.html