AWT-2

来源:互联网 发布:淘宝卖家交流群 编辑:程序博客网 时间:2024/06/06 07:48

1. 容器类型的主要继承结构:

    1) Container容器类底下主要有三种容器子类,分别是Window、Panel和ScrollPane;

    2) Window就是最常见的顶级窗口,即一般应用程序最下层的那个框架窗口,只不过这里的Window所代表的顶级窗口非常简单,没有标题、空白且不可拖放和伸缩,而Window的子类Frame则具有标题并允许拖放改变位置且可以调整窗口大小,因此通常Frame使用的较多而Window很少用到;

    3) Window类的另一个常用子类就是Dialog对话框类,Dialog可以创建模态和非模态对话框用于和用户进行交互;

    4) Panel类是Container类的第二常用子类,表示面板类,该类的特性是不能独立存在,也不能作为顶层窗口,必须被包含在其它容器中(只要是容器都行,连其子类Applet也行),其实际表现就是一个矩形区域,其作用仅仅就是为其它组件提供空间,最终目的就是对画面中的组件进行有效的组织;

    5) Panel类最著名的子类就是Applet类,它将网页最为其容器显示Java图形画面;

    6) Container类的第三大子类就是ScrollPane,即滚动窗格类,其实现了水平和垂直的滚动条,当其中的组件超出滚动窗格的界限则可以通过滚条显示全部Scroll,它也不能独立存在,必须被包含在其它容器中,同样也不能作为顶层窗口;


2. 创建AWT应用程序的大致过程:

    1) 该过程其实就是一个创建容器并包含组件的过程;

    2) 必须要有一个顶层的框架窗口(可以是Window、Frame、Dialog等),因此先建立一个顶层窗口;

    3) 有了顶层窗口这个容器了以后就可以往里面add各种组件,当然也可以进行容器嵌套;

    4) 待一系列组件、容器都添加完毕后进一步完善事件监听、响应等机制;

    5) 最后由于所有组件默认都是隐藏的,因此只要将最顶层的那个容器setVisible(true)就可以了,注意!只需要将最顶层的框架窗口设为可见即可,不必将里面的所有组件(容器)都设为可见;


3. Frame的创建:

    1) Frame有标题、可拖放、可伸缩,因此其构造器必定包含一个标题字符串;

    2) 构造器:Frame(String title); // 设定框架窗口的标题

    3) 框架框架顾名思义就是作为顶层窗口的框架,即一般都使用Frame作为顶层窗口,偶尔也会使用Dialog对话框作为顶层窗口(像计算器这样的应用程序就可以仅仅使用对话框作为顶层窗口);

    4) 示例:

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. public class AwtTest {  
  2.   
  3.     public static void main(String[] args) {  
  4.         // TODO Auto-generated method stub  
  5.           
  6.         Frame f = new Frame("Frame Test");  
  7.         f.setBounds(3030250300);  
  8.         f.setVisible(true);  
  9.     }  
  10.   
  11. }  
!这里仅仅显示了一个框架窗口,但并没有响应点击右上角关闭按钮的事件,因此无法关闭该程序,只能通过任务管理器强行关闭;


4. 使用Panel:

    1) Panel仅仅就是一个用来盛装其它组件的矩形区域,并且必须依附在其它容器之内;

    2) 示例:

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. public class AwtTest {  
  2.   
  3.     public static void main(String[] args) {  
  4.         // TODO Auto-generated method stub  
  5.           
  6.         Frame f = new Frame("Panel Test");  
  7.           
  8.         Panel p = new Panel();  
  9.         p.add(new TextField(20));  
  10.         p.add(new Button("push"));  
  11.           
  12.         f.add(p);  
  13.           
  14.         f.setBounds(3030250300); // 这两个放最后  
  15.         f.setVisible(true);  
  16.     }  
  17.   
  18. }  
!这里在Panel里放了一个文本编辑框和一个按钮,而Panel则放在Frame中;

!!一般将顶层窗口的位置大小设定和可见性设置放在最后;


5. ScrollPane的应用:

    1) 其和Panel属于同一系列,只不过比Panel多一个可以滚动的功能,必须依附于其他容器的可滚动矩形区域;

    2) 其构造器必然是和滚动设置有关:ScrollPane(int scrollbarDisplayPolicy); // 设置滚动条的显示方法

    3) 显示方法是由ScrollPane类定义的三个静态常量,分别是SCROLLBARS_ALWAYS(总是显示滚条)、SCROLLBARS_NEVER(从不显示)、SCROLLBARS_AS_NEEDED(根据具体情况自动决定显不显示);

!!如果为ALWAYS则水平和垂直滚条同时显示,而AS_NEEDED会根据需要显示一个或两个;

    4) 默认的无参构造函数ScrollPane();默认使用SCROLLBARS_AS_NEEDED;

    5) 示例:

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. public class AwtTest {  
  2.   
  3.     public static void main(String[] args) {  
  4.         // TODO Auto-generated method stub  
  5.           
  6.         Frame f = new Frame("ScrollPane Test");  
  7.           
  8.         ScrollPane sp = new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS);  
  9.         sp.add(new TextField(500));  
  10.           
  11.         f.add(sp);  
  12.           
  13.         f.setBounds(303020100);  
  14.         f.setVisible(true);  
  15.     }  
  16.   
  17. }  

!可以看到文本框长度远大于框架窗口的宽度,因此水平滚条起作用了,而垂直滚条起不到作用,因此垂直滚条被灰化了;


1. 组件和容器:

    1) 所有的图形元素都可以看成一个图形组件,比如一个按钮、编辑框,甚至是一个窗口都是一个图形组件,这里就简称组件;

    2) 而容器在Java图形界面中是一种特殊的组件,顾名思义它就是用来存放其它组件的,比如上面所说的窗口就是一种容器组件,在它里面可以存放按钮、编辑框等组件,这些成为他的子组件;

    3) 当然容器里也可以存放其它容器,即嵌套;


2. AWT体系的类继承结构:

   1) AWT共有两个最基本的基类,一个是Component类,另一个是MenuComponent类,它们又都是Object类的子类,前者代表普通组件,后者代表和菜单相关的组件;

   2) 一些最基本的而常见的普通组件如Button(按钮)、TextField(文本编辑框)、List(列表)等都是Component类的子类;

   3) Component类最重要的一个子类就是Container类(容器),容器也是一种组件,可以存放其它容器,也能嵌套存放容器;

   4) MenuComponent类有两个子类,一个是MenuBar,即菜单栏类,可以把菜单栏看做一个存放菜单项的容器,还有一个子类是MenuItem类,即菜单项,即菜单栏中的子菜单按钮,而MenuItem的子类是Menu类,可以构造子菜单中的各个菜单项;


3. Component的常用方法:组件的坐标都是相对于其所在容器的左上角(即相对于父组件的坐标系),都是逻辑坐标并非像素坐标,因为逻辑坐标可以实现平台无关

    1) void setLocation(int x, int y); // 设置组件左上角的坐标

    2) void setSize(int width, int height); // 设置组件的大小,单位同样是逻辑单位

    3) void setBounds(int x, int y, int width, int height); // 同时设置坐标和大小

    4) void setVisible(boolean b); // 设置该组件初始时是可见(true)还是隐藏(false),一旦隐藏连任务栏都不会显示哟!!

!!所有Component类的子类(Button、TextField等)都可以使用这些方法;


4. Container类特有的一些常用方法:

    1) 它也是Component类的一种,因此也可以使用从Component类继承而来的方法;

    2) Component add(Component comp); // 向容器末尾添加一个组件,返回的就是参数comp

    3) Component getComponentAt(int x, int y); // 返回指定坐标处的组件,如果坐标在容器之外在返回null,如果坐标处没有组件或者坐标刚好落在容器边缘则返回容器本身

    4) int getComponentCount(); // 返回容器中组件的数量

    5) Component[] getComponents(); // 返回容器中的所有组件(保存在数组中)


0 0
原创粉丝点击