JAVA 图形用户界面
详细描述:
一、AWT是什么?
AWT是抽象窗口工具包,找哥哥工具包提供了一套与本地图形界面想
法交互的接口。AWT中的图形方法与操作系统所提供的图形方法之间有一
一对应的关系。也就是说利用AWT来构建图形用户界面时,我们实际上是
在利用操作系统所提供的图形库,由于操作系统的图形库所提供的功能不
一样,在一个平台上存在的功能在另一个平台上可能不存在。为了实现
java语言所宣称“一次编译,到处运行”的概念,AWT不得不通过牺牲功
能来实现其平台无关性,也就是说提供的图形功能是各种通型操作系统所
提供的图形功能的交集。由于AWT是依靠本地方法来实现其功能,我们通
常把AWT控件称为重量级控件。
二、Swing是什么?
swing是在AWT的基础上构建的一套新的图形用户界面系统,它提供了
AWT所能够提供的所有功能,并纯粹的用java代码对AWT的功能进行大幅的
扩充。由于在swing中没有使用操作系统本地方法来实现图形功能,我们
通常把swing控件称为轻量级控件。
三、swing与AWT的区别:
1)AwT是基于本地方法的c / c++程序,其运行速度快;swing是基于java
程序,其运行速度慢;
2)AWT的控件在不同的平台可嫩而过表现不同,而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(窗口),之所以成为重量级,是应为他们都是继承与AWT的Containner类。重量级容器为其他容器和组件限制提供位置。每个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) 监听器对事件进行处理。
事件适配器
自定义一个事件监听器累必须实现一个监听器接口,那么就意味着该接口的所有抽象方法都必须在自定义的监听器类中被实现。但如果一个监听器接口中有很多抽象方法,而其中一些抽象方法并不是我们所关注的,我们也不得不去实现,这导致我们会编写一些多余的代码,降低了开发效率,事件配时器就是专门用来解决这一问题。
事件适配器的工作原理很简单,他是一个类,这个类用空方法实现了监听器接口中所有的抽象方法。我们只需要继承适配器,然后后重写我们的方法即可。