SWING和AWT都是JAVA数据库中的包,用于JAVA程序的可视化开发。
需要注意的是AWT的图形函数与操作系统提供的图形函数有着一一对应的关系,因此当我们利用 AWT构建图形用户界面的时候实际上是调用了操作系统的图形库。
因为不同的操作系统图形库的内容可能不近相同,因此AWT不得不通过牺牲功能来实现平台无关性。因此,AWT 的图形功能是各操作系统图形功能的“交集”。
因为AWT是依靠本地方法来实现功能的,所以AWT控件称为“重量级控件”。
而 Swing是用纯粹的Java代码来实现的,因此Swing控件在各平台通用。
##AWT和Swing之间的区别:
1)AWT 是基于本地方法的C/C++程序,其运行速度比较快;Swing是基于AWT的Java程序,其运行速度比较慢。
2)AWT的控件在不同的平台可能表现不同,而Swing在所有平台表现一致。
在实际应用中,应该使用AWT还是Swing取决于应用程序所部署的平台类型。例如:
1)对于一个嵌入式应用,目标平台的硬件资源往往非常有限,而应用程序的运行速度又是项目中至关重要的因素。在这种矛盾的情况下,简单而高效的AWT当然成了嵌入式Java的第一选择。
2)在普通的基于PC或者是工作站的标准Java应用中,硬件资源对应用程序所造成的限制往往不是项目中的关键因素。所以在标准版的Java中则提倡使用Swing, 也就是通过牺牲速度来实现应用程序的功能。
在java中,AWT包的名称是java.awt,Swing包的名称是javax.swing。
##Swing组件按功能可分为如下几类:
1、顶层容器:JFrame, JApplet, JDialog和JWindow。
2、中间容器:JPanel, JScrollPane, JSplitPane, JTooIBar等。
3、特殊容器:在用户界面上具有特殊作用的中间容器,如JlnternalFrame、JRootPane、JLayeredPane和JDestopPane等。
4、基本组件:实现人机交互的组件,如Button、 JComboBox、Just, Menu、Mider等。
5、不可编辑信息的显示组件:向用户显示不可编辑信息的组件,如JLabel、JProgressBar和JTooITip等。
6、可编辑信息的显示组件:向用户显示能被编辑的格式化信息的组件,如JTable、JTextArea和JTextField等。
7、特殊对话框组件:可以直接产生特殊对话框的组件,如JColorChoosor和JFileChooser等。
常用的顶级容器:
JFrame(框架):表示主程序窗口
JDialog(对话框):每个JDialog对象表示一个对话框,对话框属于二级窗口
JApplet(小程序):在浏览器内显示一个小程序界面
##布局
在SWING的各级组件当中, 顶级容器通常默认使用边界布局(BorderLayout),中间容器通常使用流式布局(flowlayout),当然在有不同需求的时候可以根据需求设置不同的布局。
如图所示,若直接在JFrame上加上JButton等基础组件,由于边界布局原因便会出现如下效果,一个按钮占满整个容器。因此需要注意的是基础组件需要加载在设置为流式布局的容器上。
最后实现效果如下:
TIPS:
(1)如在JFrame上添加监听器需要添加在确切的需要监听的基础 组件上
(2)JFrame自身带有重绘PAINT方法,如需保持JFrame上的画面不被重绘需要继承并重写JFrame的PAINT方法。