java容器Container和组件Component之GUI

     GUI全称Graphical User Interfaces,意为图形用户户界面,又称为图形用户接口,GUI指的就是采用图形方式显示的计算机操作用户界面,打个比方吧,我们点击QQ图标,就会弹出一个QQ登陆界面的对话框。这个QQ图标就可以被称作图形化的用户界面。

       实现GUI编程的必不可少的三个条件是组件,事件和事件监听。

组件

       组件就是一些基本的图形元素,包含有两类组件,一类是像我们经常用到的按钮、文本框、文本域、多选按钮、单选按钮等;另一类是我们经常说到的容器,比如说窗体、Panel等,它的作用主要是用来组织界面上的组件或者单元。
AWT组件
       AWT组件是重量级组件,它依赖于本地操作系统的GUI,缺乏平台独立性。但是AWT组件简单稳定,兼容于任何一个JDK版本。AWT所涉及到的类一般在java.awt的包及其子包中。java.awt中的类负责与本地操作系统进行交互,让本地操作系统显示和操作组件。
       AWT中的两个核心类是Container(容器)和Component类
                    

Component类

        Java图形用户界面最基本组成部分是Component,Component类及其子类的对象用来描述以图形化的方式显示在屏幕上并能够与用户进行交互的GUI元素(标签、按钮)。

Container类

        用来组织界面上的组件或者单元。有两种常用的Container(容器),一是Window,Window对象表示自由停泊的顶级窗口,另一个是Panel对象可作为容纳其他Component对象,但不能够独立存在,必须被添加到其他Container中,比如说Window或者Applet中。
        Container它有一定的范围和大小,一般都是矩形。也有一定的位置,这个位置可分相对位置和绝对位置。
        一个Container中可以包含其他Container,Container中可以嵌套Container,当Container显示时候,它里面的元素也被小时出来,当Container隐藏时或者关闭时,它包含的元素也被隐藏。 

Component类与Container类关系

       Component对象不能独立显示出来,必须放在某一Container对象中才可以显示出来。 

       Container是Component的子类,Container子类对象可以容纳别的Component对象。Container对象也可以被当作Component对象添加到其他Container对象中。   

事件

        事件是指组件触发的动作事件,java中不同的事件由不同的监听器处理,组件是事件源对象,而监听器主要用来接收来自事件源对象产生的动作事件,然后对其处理。

事件监听

                  
说明:
        事件实现过程中产生的对象:事件、事件源、监听器
        事件:用户在界面上的某一个操作,通常使用各种输入设备,如鼠标、键盘等。
        事件源:产生事件的组件,例如在一个按钮上的单击就是事件源
        监听器:包含事件处理器,负责检查事件是否发生,若发生则激活事件处理器对其处理
 
       监听过程: 当事件源对象产生某种事件时,先封装该事件的信息,然后向监听器传送此事件对象,监听器在接收到事件对象后,为了能让监听器检查组件是否发生了该事件,会向该事件源对象(即该组件)注册事件监听器,然后事件处理器会检查事件是否发生,如果发生了,那么激活事件处理器进行处理。
实例: 
 import java.awt.*;  
  1. import java.awt.event.*;  
  2. public class TFActionEvent {  
  3.   
  4.     public static void main(String[] args) {  
  5.         new TFFrame();  
  6.     }  
  7.   
  8. }  
  9.   
  10. class TFFrame extends Frame  
  11. {  
  12.     TFFrame()  
  13.     {  
  14.         TextField tf = new TextField();  
  15.         add(tf);  
  16.         //TextField上添加监视器  
  17.         tf.addActionListener(new TFActionListener());  
  18.         pack();  
  19.         setVisible(true);  
  20.     }  
  21. }  
  22.   
  23. class TFActionListener implements ActionListener  
  24. {  
  25.     public void actionPerformed(ActionEvent e)  
  26.     {  
  27.         //(TextField)e.getSource()强制将对象转换为TextField  
  28.         TextField tf = (TextField)e.getSource();  
  29.         System.out.println(tf.getText());  
  30.     }  
  31. }  
运行结果:
        

 

总结

       对于一款好的软件来说,其软件的图形化界面相当重要,不仅能够让开发人员和用户能够直观的表达软件用意,还能给用户带来视觉享受,让用户愿意使用软件,同时也让开发人员变的更加自信,相信自己能够做出更美观的用户软件。
原文地址:https://www.cnblogs.com/ltb6w/p/8282686.html