JAVA 图形用户界面

JAVA 图形用户界面

详细描述:

一、AWT是什么?

   AWT是抽象窗口工具包,找哥哥工具包提供了一套与本地图形界面想

法交互的接口。AWT中的图形方法与操作系统所提供的图形方法之间有一

一对应的关系。也就是说利用AWT来构建图形用户界面时,我们实际上是

在利用操作系统所提供的图形库,由于操作系统的图形库所提供的功能不

一样,在一个平台上存在的功能在另一个平台上可能不存在。为了实现

java语言所宣称“一次编译,到处运行”的概念,AWT不得不通过牺牲功

能来实现其平台无关性,也就是说提供的图形功能是各种通型操作系统所

提供的图形功能的交集。由于AWT是依靠本地方法来实现其功能,我们通

常把AWT控件称为重量级控件。

 

二、Swing是什么?

   swing是在AWT的基础上构建的一套新的图形用户界面系统,它提供了

AWT所能够提供的所有功能,并纯粹的用java代码对AWT的功能进行大幅的

扩充。由于在swing中没有使用操作系统本地方法来实现图形功能,我们

通常把swing控件称为轻量级控件。

 

 

三、swing与AWT的区别:

1AwT是基于本地方法的c / c++程序,其运行速度快;swing是基于java

程序,其运行速度慢;

2AWT的控件在不同的平台可嫩而过表现不同,而swing在所有平台表现

一致

 

   在实际应用开发中,应该使用AWT还是swing取决于应用程序所部属的

四、平台类型。

1)对于一个嵌入式开发,目标平台的硬件资源非常有限,而应用程序的

运行速度又是项目中至关重要的因素,简单而高效的AWT称看嵌入式开发

的第一选择;

2在普通的基于PC或者工作站的标准java引用开发中、硬件资源

对应的程序所造成的限制往往不是项目中的关键因素,所以在标准版的j

ava中则提倡使用swing,也就是说 通过牺牲速度来实现应用程

序的功能。

 

五、什么是MVC模型构架?

  MVC是应用与Java界面开发的一种构架模式,在这种构架模式

中讲界面以及操作分为三个分离的功能部分,分别是模型(Model)

、视图(view)和控制器(controller)。

 

模型:用于存储界面上的要显示的数据

视图:用于将模型中存储的数据显示到界面

控制器:用于处理用户子在界面上的各种操作并给与响应

 

5.1、MVC的处理过程:

1)控制器接收用户的操作请求,并解决应该调用哪个的数据来处理;

2)模型根据调用用户请求进行相依的业务逻辑处理,并返回用户需要的

数据;

3)控制器调用相应的是同将模型返回的用户数据显示到界面上。

 

5.2、MVC模型框架的优点:

1)多个视图可以共享一个模型,大大提高了代码的可重用性,意思是同

一个模型数据可以再不同的视图上显示

2)由于MVC的三部分相互独立,改变其中一个不会影响其它两个,所

以使用这种构架编写的代码具有良好的松耦合性。

3)控制器底稿了程序的灵活性和可配置性,及控制器可以用来连接不同

的模型和视图去完成用户的需求。           

 

六、swing的分离模型构架

  在Sun公司swing时发现,应为试图和控制器存在很强的依赖

关系,于是将视图和控制器合并在一起叫UI委托。这种经过调整后的模

型框架,在swing中称为模型-委托构架或分离模型构架。

 

Swing视图部分分有组件(如按钮、对话框等),其中容器是一种特殊的组件,它是用于存用于存放其他组件;而且容器页可以存放容器。Swing规定一个组件要显示在界面上,就必须至少放在个容器里;

6.1、Swing的容器分为两种:一种是重量级容器,一种是轻量级容器

重量级容器:包括JFrame类(窗体),JDialog类(对话框)、JWindows(窗口),之所以成为重量级,是应为他们都是继承与AWTContainner类。重量级容器为其他容器和组件限制提供位置。每个swing程序至少创建一个重量级容器才可以显示界面。

轻量级容器:包括JPanel类(面板)、JSplitpane类(分隔窗格)、JScrollpanel类(工具),以及一些专用的容器,之所以成为轻量级容器,是因为他们和其他普通组件一样,都是继承于swing类的JComponent类。轻量级容器的作用主要是为了方便定位其他组件。

Swing组件多用于界面显示(如JButton类(按钮)、JPadioButton类(单选按钮、JCheckbox类(复选框)、JCombox类(组合框)、JTxtField类(文本)、JTextAree类(多行文本)等。这些组件通常不能包含其他组件。Swing的组件也继承与swing类的JComponent类。)

 

创建界面视图的一般步骤:

1、     自定义程序的主窗体通常是通过继承与JFrame类创建的,创建的窗体默认有标题栏、最大化、最小化以及关闭功能等;

1)在构造器首行调用父类的有参构造器

2)在构造器中调用窗体类的setBounds() 方法设置窗体的初始位置和大小;

3)调用窗体类的setLocationRelativeTo()方法的设置窗体居中显示;

2、设置布局管理器

在构造器中调用setLayout()方法设置相应的布局管理器

3、添加组件

1)在构造器中实例化组件对象;

2)调用add()方法组件对象添加到窗体容器中;

4、调用setVisible()方法显示窗体

5、创建主窗体对象

main()方法中实例化自定义的主窗体类

 

Swing的布局管理器

         当一个窗体的组件较多时,界面应该简介整齐、放置合理。Java采用布局管理器中的组件进行相对布局;当改变容器大小时,或者改变容器组件大小,或者组件之间的相对位置,保证组件不会被覆盖并且容器没有空白区域。

Java中提供多种风格和特点的布局管理器,每一种布局管理器指定一种组件之间的相对位置;

Swing中提供的常用布局管理器有四种。

 

 FlowLayout管理器:

也叫流式布局管理器。它将容器内组件按照从左到右的流式顺序布局。

特点:

1)  组件在容器中大小事组件的首选大小;

2)  组件添加到组件容器中的先后顺序决定其在容器中的左右排列顺序;

3)  如果容器的宽度不足以显示所有组件,组件会换行显示;

4)  可以控制组件显示居中、居左、居右显示;

5)  可以控制组建的垂直和水平间距;

注意:JPanel类容器是默认采用流式布局管理器

 

Borderlayyout管理器:也叫边框布局管理器,它将容器分为东、南、西、北中五个区域,每个区域只能添加一个组件,并且组件的大小是由它出现的区域决定。

 

特点:

1)组件使用add()

 

 

 

GridBaglayout管理器:

该组件布局管理器是swing当中最灵活也是最复杂的布局管理器,可以对控件在容器中的位置进行比较灵活的调整。

 

绝对布局(不使用布局管理器);

         就是通过

 

 

 

 

 

 

 

 

 

 

 

 

什么是事件:

用户对组件的一个操作:称为一个事件(Event)(如点击一下按钮的操作)

什么是事件源:

产生事件源的组件,称为事件源(Event Souce)。(如被点击的按钮就是事件源)

事件监听器:

对产生事件的组件进行监听,称为事件监听器(如监听按钮有没有产生事件)

事件处理:

对事件监听器听到的事件进行处理,称为事件处理(Event Handle

事件处理机制的流程:

1)  注册事件源(组件)的事件监听器;

2)  用户操作事件源(组件)产生事件;

3)  事件被注册的监听器监听到;

4)  监听器对事件进行处理。

 

事件适配器

自定义一个事件监听器累必须实现一个监听器接口,那么就意味着该接口的所有抽象方法都必须在自定义的监听器类中被实现。但如果一个监听器接口中有很多抽象方法,而其中一些抽象方法并不是我们所关注的,我们也不得不去实现,这导致我们会编写一些多余的代码,降低了开发效率,事件配时器就是专门用来解决这一问题。

 

事件适配器的工作原理很简单,他是一个类,这个类用空方法实现了监听器接口中所有的抽象方法。我们只需要继承适配器,然后后重写我们的方法即可。

 

用AWT来生成图形化用户界面时,组件和容器的概念非常重要。组件是各种各样的类,封装了图形系统的许多最小单位,例如按钮、窗口等等;而容器也是组件,它的最主要的作用是装载其它组件,但是象Panel这样的容器也经常被当作组件添加到其它容器中,以便完成杂的界面设计。布局管理器是java语言与其它编程语言在图形系统方面较为显著的区别,容器中各个组件的位置是由布局管理器来决定的,共有5种布局管理器,每种布局管理器都有自己的放置规律。事件处理机制能够让图形界面响应用户的操作,主要涉及到事件源、事件、事件处理者等三方,事件源就是图形界面上的组件,事件就是对用户操作的描述,而事件处理者是处理事件的类。因此,对于AWT中所提供的各个组件,我们都需要了解该组件经常发生的事件以及处理该事件的相应的监听器接口。 对于AWT而言,Java 1.1到Java 1.2最大的改变就是Java中所有的库。当Java 1.1版纳入新的事件模型和Java Beans时,平台被设置--现在它可以被拖放到可视化的应用程序构建工具中,创建GUI组件。另外,事件模型的设计和Bean无疑对轻松的编程和可维护的代码都非常有益。对于Swing组件而言,交叉平台GUI编程可以变成一种有意义的尝试。 本章主要介绍了一些Swing的新特性,它和AWT相比有哪些不同的方法和应用,着重阐述了Swing的特色组件和容器,并以图形的形式给出具体描述,同时介绍了组件的分类,使用Swing的基本规则,各种容器面板以及布局管理器,由于Swing是Java2新增特性, 它对图形化用户界面提供了庞大而复杂的类库支持,要能做到开发和实用,还需做大量工作,利用API的帮助,逐步深入摸索其规律,从组件和容器入手,掌握其特色方法。从另一角度来看,Swing和AWT无论是布局管理器还是事件处理机制,以及对一些重量容器的保留和使用,都是我们非常熟悉的内容,其原理我们已在AWT一章做了详细介绍,因此,AWT作为Swing的基础,是需要很好掌握的,希望大家能在不断设计应用中摸索出新方法和新技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值