本来想昨晚把布局管理器复习完之后放到日志上,以为差不多可以掌握了,突然发现一开始写代码就各种不会,以至于写到现在才只能做出最简单的界面,所以说以后还是要多敲敲代码,巩固下所学的知识,任重道远啊!废话不多说,开始总结:
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();
}
}
待续......(补充至下一篇)
网友评论