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

实现GUI编程的不可缺少的三个条件是组件、事件

组件

       组件就是一些主要的图形元素。包括有两类组件,一类是像我们常常常使用到的button、文本框、文本域、多选button、单选button等。还有一类是我们常常说到的容器。比方说窗口、Panel等,它的作用主要是用来组织界面上的组件或者单元。

AWT组件
       AWT组件是重量级组件,它依赖于本地操作系统的GUI,缺乏平台独立性。可是AWT组件简单稳定。兼容于不论什么一个JDK版本号。AWT所涉及到的类一般在java.awt的包及其子包中。java.awt中的类负责与本地操作系统进行交互,让本地操作系统显示和操作组件。

       AWT中的两个核心类是Container(容器)和Component类
                    

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGFuZGFuem1j/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

Component类

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

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中不同的事件由不同的监听器处理,组件是事件源对象。而监听器主要用来接收来自事件源对象产生的动作事件,然后对其处理。

事件监听

                

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGFuZGFuem1j/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

说明:
        事件实现过程中产生的对象:事件、事件源、监听器
        事件:用户在界面上的某一个操作,通常使用各种输入设备,如鼠标、键盘等。

        事件源:产生事件的组件,比如在一个button上的单击就是事件源
        监听器:包括事件处理器,负责检查事件是否发生,若发生则激活事件处理器对其处理

       监听过程: 当事件源对象产生某种事件时,先封装该事件的信息。然后向监听器传送此事件对象。监听器在接收到事件对象后。为了能让监听器检查组件是否发生了该事件。会向该事件源对象(即该组件)注冊事件监听器,然后事件处理器会检查事件是否发生,假设发生了,那么激活事件处理器进行处理。
实例:
import java.awt.*;
import java.awt.event.*;
public class TFActionEvent { public static void main(String[] args) {
new TFFrame();
} } class TFFrame extends Frame
{
TFFrame()
{
TextField tf = new TextField();
add(tf);
//TextField上加入监视器
tf.addActionListener(new TFActionListener());
pack();
setVisible(true);
}
} class TFActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
//(TextField)e.getSource()强制将对象转换为TextField
TextField tf = (TextField)e.getSource();
System.out.println(tf.getText());
}
}

执行结果:

        

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGFuZGFuem1j/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">


总结

       对于一款好的软件来说,其软件的图形化界面相当重要,不仅可以让开发者和用户可以直观的表达软件用意。还能给用户带来视觉享受,让用户愿意使用软件。同一时候也让开发者变的更加自信,相信自己可以做出更美观的用户软件。

 关于J2SE的总结结束了。下面是我在学习J2SE时的一系列总结。
         Java异常处理
         Java经常使用类
         Java容器
         Java流

最新文章

  1. MySqlNDB使用自带的ndb_setup.py安装集群
  2. 使用snmp+mrtg监控CPU、流量、磁盘空间、内存
  3. group_concat函数使用
  4. 实现iOS前台时的推送弹窗效果
  5. transform应用详解
  6. php编译参数注解--不明白许多参数的作用 慎用 –with-curlwrappers参数
  7. Memcached source code analysis (threading model)--reference
  8. apache-php安装mysql简单方法
  9. makecert 制作数字证书
  10. CSS一些设置用法
  11. Android系统关机或几种方式重启
  12. React 实现一个漂亮的 Table
  13. appium-基本操作的再次封装(加上文件路径、log、截图、异常处理)
  14. bzoj 1951
  15. CentOS 安装 OpenResty
  16. Java .Net Byte数组存储差异以及解决方法
  17. BIND简易教程(1):安装及基本配置
  18. [MySQL] Innodb參数优化
  19. Atitit.html解析器的选型 jsoup nsoup ,java c# .net 版本
  20. ARP-Address Resolution Protocol-地址解析协议

热门文章

  1. python字符串操作总结
  2. 启动及重新启动nginx,重启nginx后丢失nginx.pid问题解决
  3. 赵雅智:service_startService生命周期
  4. Java中常见的几种类型转换
  5. 个人自建网店(WordPress WooCommerce on SAE)集成支付宝支付
  6. Oracle 字段是多个值的字符串的查询处理
  7. 使用wget -i下载多个文件
  8. 我的Python成长之路---第六天---Python基础(18)---2016年2月20日(晴)
  9. angularJS友好URL实现 good
  10. Android Camera调用过程分析