Java图形界面编程知识点汇总
一:基本概念:
@.AWT(Abstract Window Toolkit):
抽象窗口工具包,SUN 公司提供的用于图形界面编程(GUI)的类库。AWT框架不使用原生窗口部件(native widgets),一直未能突破LCD问题。LCD问题导致了一些主要平台特征的遗失.AWT 组件具有平台相关性.
@.Swing:
Swing 是纯Java 实现的轻量级(light-weight)组件,它不依赖系统的支持,Swing 组件在不同平台具有一致性的表现,可以解决AWT框架的LCD问题,是Sun创建的新框架,但是Swing应用程序的界面外观不再和原生应用程序的外观相似。而且消耗太多的内存,这样Swing不适于一些小设备.
Swing 采用了MVC(模型-视图-控制,Model-View-Controller)设计模式。
@.SWT(Standard Widget Toolkit):
为了彻底解决AWT和Swing框架带来的问题,IBM创建了一个新的GUI库,这就是SWT。
SWT 是一个开源的GUI编程框架,与AWT/Swing有相似的用处,著名的开源IDE-eclipse就是用SWT开发的。SWT本身仅仅是Eclipse组织为了开发Eclipse IDE环境所编写的一组底层图形界面 API。但是 SWT无论是在性能和外观上,都超越了SUN公司提供的AWT和Swing。目前SWT已经十分稳定。
@.JFrace:
为了方便开发SWT程序,在SWT基础上又创建了一个更易用、功能强大的图形包“JFace”。然而,JFace并不能完全覆盖SWT的所有功能,所以编程时SWT、JFace都会要用到,但是一般来说,能用JFace的组件就最好不要用SWT的。
@.三大Java GUI开发插件:
1).Visual Editor:
Eclipse官方提供了一个叫做Visual Editor(VE)的开源GUI插件,功能还是比较强。但是缺点太多,可用性不强.
2).SWT-Designer:
SWT-Designer是大家公认的,最强的Eclipse下开发GUI的插件http://www.swt-designer.com/。不过SWT-Designer是一个收费的插件。不收费的是基础版本,功能受到很大的限制。当然,网上也有完整版的破解版。
3).Jigloo:
Jigloo 是一个 Eclipse 插件,它可用于构建基于 Swing 的应用程序和基于SWT的应用程序。它是一个易于使用的可视化编辑器.
@.java.awt 包:
java.awt 包中提供了 GUI 设计所使用的类和接口,提供了基本的 java 程序的 GUI 设计工具。
主要包括下述三个概念:
1).组件(Component)---按钮、标签、菜单等组件的抽象基本类.
2).容器(Container)---有两类:窗口Window(可以独立存在)和面板Panel(必须放在其他容器内).
而窗口类又分为框架Frame和对话框Dialog.
3).布局管理器(LayoutManager)---定义容器中组件摆放位置和大小接口.AWT 中的五种布局管理器:
边界布局管理器(BorderLayout),流式布局管理器(FlowLayout), 网格布局管理器(GridLayout), 卡片布局管理器(CardLayout), 网格包布局管理器(GridBagLayout).
窗体(Frame,Dialog)的默认布局为 BorderLayout(边界布局管理器)
。
面板()的默认布局管理器是 FlowLayout
布局管理器。
4).Graphics(图形类)——组件内与图形处理相关的类.
@.Frame和JFrame(框架):
Frame
是带有标题和边框的顶层窗口。窗体的默认布局为 BorderLayout(边界布局管理器)
。
JFrame 类是AWT Frame 类的一个子类。它还加入了一些 Swing 所独有的特性。与 Frame 的使用十分相似。唯一的区别在于,你不能将组件加入到JFrame中。你可以将组件加入到 JFrame 的contentpane(内容面板) 中,或者提供一个新的contentpane(内容面板)。
@.Panel和JPanel(面板):
Panel
是最简单的容器类。不能独立存在,必须依赖其他容器才能显示,可放置其他组件,甚至其他面板,自然就可设置布局管理器,其
默认布局管理器是 FlowLayout (流式布局管理器)
。
JPanel
是一般轻量级容器.
@.java图形用户界面的构成:
容器, 控制组件和用户自定义成分(自定义的图形或者标志,不能实现交互).
@.Java中的绘图操作:
Java 中使用Graphics对象可以进行各种绘图操作。
继承Panel类
public class TestDraw extends Panel{
重写paint()方法,窗口刷新时自动执行paint()方法。
public void paint(Graphics g){
g.drawOval(50,50,30,30); //画椭圆
}
}