java GUI 总结(1)
1.java GUI
GUI ( Graphic User Interface
) 图形用户界面。
java GUI 分为 AWT 和 SWING。
1.1、AWT(AWTAbstract Window Toolkit)抽象窗口工具包
AWT是比较旧的双介面函式库,它依然高度倚赖各作业平台自身所具备的绘图功效机能,且用一个比包容程式(Wrapper)还小的设计还去除、吸收各作业平台间的绘图功能机能差异,以致Java程式在跨平台移携后的绘图呈现不够一致,这使得AWT遭受到众多的批评。这意味着:AWT的Widget倚赖作业平台自身原有的Widget功效机能,程式设计师在开发撰写时必须去了解各作业平台在Widget方面的差异性,如此便偏离了Java程式语言最初的宗旨:跨平台一致性。
AWT由java.awt包提供,其提供了支持GUI设计的类和接口,而又AWT提供的组建一般称之为重量级组件,其是由本地方法来实现其功能的。AWT的特点:
- AWT 中的图形函数与操作系统所提供的图形函数之间有着一一对应的关系
- AWT 通过牺牲功能来实现其平台无关性
- AWT不能满足图形化用户界面发展的需要
1.2、Swing包
为了解决AWT组件的缺陷,特别是跨平台的问题,在JDK1.2版本后提供了新的Swing包,有javax.swing提供,Swing是在AWT的基础上构建的一套新的图形界面组件,所有组建均是由java书写,具有良好的跨平台性,由于Swing没有使用本地方法实现图形功能,因此提出把Swing组件称之为轻量级组件。
注意:Swing组建是在AWT基础上建立的,而不是替代AWT的,AWT是根基,Swing是发展。
Swing组件几乎都是轻量组件,那些顶层容器:窗体,小应用程序、窗口和对话框除外。因为轻量组件是在其容器的窗口中绘制的,而不是在自己的窗口中绘制的,所以轻量组件最终必须包含在一个重量容器中。因此,Swing的窗体、小应用程序、窗口和对话框都必须是重量组件,以便提供一个可以在其绘制Swing轻量组件的窗口。
1.3AWT和Swing的区别
AWT是Abstract Window ToolKit (抽象窗口工具包)的缩写,这个工具包提供了一套与本地图形界面进行交互的接口。AWT 中的图形函数与操作系统所提供的图形函数之间有着一一对应的关系,我们把它称为peers。 也就是说,当我们利用 AWT 来构件图形用户界面的时候,我们实际上是在利用操作系统所提供的图形库。由于不同操作系统的图形库所提供的功能是不一样的,在一个平台上存在的功能在另外一个平台上则可能不存在。为了实现Java语言所宣称的"一次编译,到处运行"的概念,AWT 不得不通过牺牲功能来实现其平台无关性,也就是说,AWT 所提供的图形功能是各种通用型操作系统所提供的图形功能的交集。由于AWT 是依靠本地方法来实现其功能的,我们通常把AWT控件称为重量级控件。
Swing 是在AWT的基础上构建的一套新的图形界面系统,它提供了AWT所能够提供的所有功能,并且用纯粹的Java代码对AWT 的功能进行了大幅度的扩充。例如说并不是所有的操作系统都提供了对树形控件的支持, Swing 利用了AWT 中所提供的基本作图方法对树形控件进行模拟。由于 Swing 控件是用100%的Java代码来实现的,因此在一个平台上设计的树形控件可以在其他平台上使用。由于在Swing 中没有使用本地方法来实现图形功能,我们通常把Swing控件称为轻量级控件。
AWT和Swing之间的基本区别:AWT 是基于本地方法的C/C++程序,其运行速度比较快;Swing是基于AWT 的Java程序,其运行速度比较慢。对于一个嵌入式应用来说,目标平台的硬件资源往往非常有限,而应用程序的运行速度又是项目中至关重要的因素。在这种矛盾的情况下,简单而高效的AWT 当然成了嵌入式Java的第一选择。而在普通的基于PC或者是工作站的标准Java应用中,硬件资源对应用程序所造成的限制往往不是项目中的关键因素,所以在标准版的Java中则提倡使用Swing,也就是通过牺牲速度来实现应用程序的功能。
简要的讲:
AWT 是抽象窗口组件工具包,是 java 最早的用于编写图形节目应用程序的开发包。
Swing 是为了解决 AWT 存在的问题而新开发的包,它以 AWT 为基础的。
常用组建使用总结
(1)Component
(2)Container
(3)Window
(4)Frame
(5)JFrame
(4)Dialog
(5)JDialog
(4)JWindow
(3)JComponent
(4)JInternalFrame
(4)JPanel JScrollPane JTabbedPane JOptionPane JSplitPane JRoontPane
(4)JTextComponent
(5)JTextField JTextArea JPasswardField
(4)AbstractButton
(5)JButton
(5)JMenuItem
(6)JMenu
(4)JLabel
(4)JImageIcon
(4)JComboBox JList
(4)JTable
(4)JTree
(4)JMenuBar JScrollBar JProgressBar JToolBar
(4)JFileChooser
(4)JColorChooser
(4)Box