AWT和Swing

Swing是个AWT改进和扩展。

书写GUI规划。Swing和AWT曾效力。他们共存 Java基础类(JFC)于。

虽然AWT和Swing都提供了构造图形界面元素的类。但它们的虫药方面有所不同。

AWT依赖于主平台绘制用户界面组件。而Swing有自己的机制。在主平台提供的窗体中绘制和管理界面组件。Swing和AWT之间的最明显的差别是界面组件的外观,AWT在不同平台上执行同样的程序,界面的外观和风格可能会有些差异。然而一个基于Swing的应用程序可能在不论什么平台上都会有同样的外观和风格。

Swing中的类是从AWT继承的。有些Swing类直接扩展AWT中对应的类。如JApplet JDialog JFrame JWindow

使用Swing设计图形界面,主要引入两个包

javax.swing包和java.awt.event包

组件和容器

组件是图形界面的基本元素。用户能够直接操作,如button。

容器是图形界面的复合元素。容器能够包括组件。

Java语言为每种组件都提前定义类,程序通过它们或者它们的子类各种组件对象。如Swing中提前定义的button类JButton是一种类,程序创建的JButton对象。或JButton子类的对象就是button。

Java也为每种容器提前定义类,程序通过它们或它们的子类创建各种容器对象。

比如,Swing中提前定义的窗体类JFrame是一种容器类,程序创建的JFrame或JFrame子类的对象就是窗体。

为了统一管理组件和容器,为全部组件类定义超类,把组件的共同拥有操作都定义在Component类中。同样。为全部容器类定义超类Container类,把容器的共同拥有操作都定义在Container类中。比如,Container类中定义了add()方法,大多数容器都能够用add()方法向容器加入组件。

Component Container和Graphics类是AWT库中的关键类。

为能层次地构造复杂的图形界面。容器被当做特殊的组件,能够把容器放入还有一个容器中。

这样的层次地构造界面的方法,都以增量的方式构造复杂的用户界面。

事件驱动程序设计基础

1.事件/监视器/监视器注冊

图形界面上的事件是指在某个组件上发生用户操作。比如,用户单机了界面上的某个button。就说在这个button上发生了事件,这个button对象就是事件的击发者。

对事件作监视的对象成为监视器,监视器提供响应事件的处理方法。为了让监视器与事件对象关联起来,须要对事件对象作监视器注冊,告诉系统事件对象的监视器。

以程序对应button事件为例。程序要创建button对象。把它加入到界面中,要为button监视器注冊,程序要有响应button事件的方法。当”单机button”事件发生时,系统就调用已为这个button注冊的事件处理方法。完毕处理button事件的工作。

2.实现事件处理的途径

Java语言编写事件处理程序主要有两种方案。一个是程序重设handleEvent,採用这种方法的程序工作量稍大一些。

还有一个方法是程序实现一些系统设定的接口。

java按事件类型提供多种接口,作为监视器对象的类穾实现对应的接口,即实现响应事件的方法。

当事件发生时。系统内设的handleEvent方法就自己主动调用监视器的类实现的响应事件的方法。

java.awt.event包中用来检測并对事件做出反应的模型包括下面三个组成元素

①源对象

②监视器对象

③事件对象

一个事件驱动程序要做的工作除了创建源对象和监视器对象之外,还必须安排监视器了解源对象,或者向源对象注冊监视器。每一个源对象有一个已经注冊的监视器列表,提供一个方法能向该列表加入监视器对象。

仅仅有在源对象注冊了监视器之后,系统才会将源对象上发生的时间通知监视器对象。

3.事件类型和监视器接口

在Java语言中,为了便于系统管理事件,也为了便于程序作监视器注冊。系统将时间分类,称为事件类型。系统为每一个事件类型提供一个接口。

要作为监视器对象的类必须实现对应的接口。提供接口规定的响应时间的方法。

再以程序对应button事件为例。JButton类对象button能够是一个事件的击发者。当用户点击界面中与button对应的button时。button对象就会产生一个ActionEvent类型的时间。假设监视器对象时obj。对象obj的类是Obj。则类Obj必须实现addActionListener方法注冊它的监视器obj。

程序执行时。当用户点击button对象对应的button时,系统就讲一个ActionEvent对象从事件传递到监视器。ActionEvent对象包括的信息包括事件发生在哪一个button,以及有关该事件的其它信息。

实际事件发生时,一般会产生一系列的时间。比如,用户点击button,会产生ChangeEvent事件提示光标到了button上,接着又是一个ChangeEvent事件表示鼠标被按下。然后是ActionEvent事件表示鼠标已松开。但光标依然在button上。最后是ChangeEvent事件,表示光标已经离开button,可是应用程序通常仅仅处理按下button的完整动作的单个ActionEvent事件。

每一个事件类型都有一个对应的监视器接口,实现监视器接口的类必须实现全部定义在接口中的方法。

$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('

    ').addClass('pre-numbering').hide();
    $(this).addClass('has-numbering').parent().append($numbering);
    for (i = 1; i ').text(i));
    };
    $numbering.fadeIn(1700);
    });
    });

    版权声明:本文博主原创文章,博客,未经同意不得转载。

【Java GUI】Java GUI基金会的更多相关文章

  1. 黑马程序员——【Java基础】——GUI(图形用户界面)

    ---------- android培训.java培训.期待与您交流! ---------- 一.概述 1.GUI(GraphicalUser Interface):又称图形用户界面,是计算机用户与计 ...

  2. 黑马程序员:Java基础总结----GUI图形化界面

    黑马程序员:Java基础总结 GUI图形化界面   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流!   GUI(Graphical User Interface)图形化界 ...

  3. 黑马程序员:Java基础总结----GUI&网络&IO综合开发

    黑马程序员:Java基础总结 GUI&网络&IO综合开发   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 网络架构 C/S:Client/Server ...

  4. 【子非鱼】冒泡排序过程呈现之java内置GUI表示

    自己玩玩写写,排序的过程多么有趣,特别是把看着电脑吧一堆乱七八糟的数据排成有序组合的时候,看起来贼舒服,特别是强迫症患者.好了,话不多说上代码,也算是自己记录一下吧,没有什么技术含量但个人感觉比较有趣 ...

  5. Swing 是一个为Java设计的GUI工具包

    Swing 是一个为Java设计的GUI工具包. Swing是JAVA基础类的一部分. Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表. Swing提供许多比AWT更好的屏幕 ...

  6. 【开发者笔记】冒泡排序过程呈现之java内置GUI表示

    自己玩玩写写,排序的过程多么有趣,特别是把看着电脑吧一堆乱七八糟的数据排成有序组合的时候,看起来贼舒服,特别是强迫症患者.好了,话不多说上代码,也算是自己记录一下吧,没有什么技术含量但个人感觉比较有趣 ...

  7. java.awt包提供了基本的java程序的GUI设计工具

    java.awt包提供了基本的java程序的GUI设计工具.主要包括下述三个概念: 组件--Component 容器--Container 布局管理器--LayoutManager package T ...

  8. Java进阶08 GUI

    GUI(Graphical User Interface)提供了图形化的界面,允许用户以图形的方式与系统进行互动.在GUI推广之前,用户通常要以文本命令的方式来控制计算机.GUI直观的将计算机的功能呈 ...

  9. Java图形界面GUI

    Java图形界面GUI 设置窗体JFrame对象 package com.Aha.Best; import javax.swing.ImageIcon; import javax.swing.JFra ...

  10. Learning Java characteristics (Java in a Nutshell 6th)

    Java characteristics: Java .class files are machine-independent, including the endianness. Java .cla ...

随机推荐

  1. spring MVC 下载文件(转)

    springle MVC中如何下载文件呢? 比struts2 下载文件简单得多 先看例子: @ResponseBody @RequestMapping(value = "/download& ...

  2. Filezilla出现中文乱码

    使用Filezilla client FTP客户端登陆某些FTP站点会出现中文乱码,原因是FTP服务器端编码与filezilla client端编码不一致造成的,解决方法如下:文件-站点管理-选中要登 ...

  3. ubuntu 经常使用软件及环境

    安装完系统后,更新系统 sudo apt-get update # 更新源索引 sudo apt-get dist-upgrade # 更新系统 sudo apt-get autoremove 1安装 ...

  4. 读取USB HDD(USB移动硬盘信息)序列号的代码

    读取USB HDD(USB移动硬盘)序列号的代码,型号及分位. 使用Visual Studio 2010编译成功. 代码使用了CrystalDiskInfo中的代码smartata.c中相关代码: 例 ...

  5. This application failed to start because it could not find or load the Qt platform plugin "xcb".

    linux根据系统Qt5未安装编译的程序Qt在该系统下进行下面的错误会报: This application failed to start because it could not find or ...

  6. grails的controller和action那点事---远程调试groovy代码

    最近由于项目需要,用到了grails,这玩意确实好用,生产率高有类型python的速度与简洁.仅第一印象,用的还不深入,说的不对请轻拍. 遇到的几个问题: 1. groovy远程调试 玩Java的应该 ...

  7. hdu 5282 Senior's String 两次dp

    题链:http://acm.hdu.edu.cn/showproblem.php?pid=5282 Senior's String Time Limit: 2000/1000 MS (Java/Oth ...

  8. C++封装SQLite实例<三>

    前一篇博客中介绍的是怎样依据sqlite3_get_table()函数来获取一张表的内容,就是一股脑的把表中的内容所有存储起来放在一个一维数组中,这其中的规则已经介绍过了.接下来讲的是怎样依据一个SQ ...

  9. java获取日期之间的差异

    转载请注明出处.谢谢http://blog.csdn.net/harryweasley/article/details/42121485 当想到要计算差值.我们肯定想的是"2014.12.1 ...

  10. namespace命名空间

    在讨论如何使用命名空间之前,必须了解 PHP 是如何知道要使用哪一个命名空间中的元素的.可以将 PHP 命名空间与文件系统作一个简单的类比.在文件系统中访问一个文件有三种方式: 相对文件名形式如foo ...