AWT部分
AWT (Abstract Window Toolkit),可用于Applet和application
功能:
用户界面组
事件处理模型
图形图像工具(形状,颜色,字体)
布局管理器,可以进行灵活的窗口布局而与特定窗口的尺寸和屏幕分辨率无关
数据传送(剪贴和复制)
类和接口:
AWTEvent
Font
Componet--Container--(Panel--Applet;Window--Frame)
Graphics
MenuComponent
布局管理类
FlowLayout 一行接一行,是Panel,Applet的缺省布局(Panel无法单独显示,必须加入某个容器)
BoradLayout 东南西北中,是Window,Frame,Dialog的缺省布局,Frame是顶级窗口
GridLayout 格,行列,平均占据容器的空间,一个构件只能在一格
CardLayout 牌,最上边能看见
GridBagLayout 实用,可以占任意个行列
Frame.pack();紧凑排列,
import java.awt.event.*
XXX.addActionListener(new ButtonHandler());
class ButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
.......do something
}
}
同一个监听器可以监听两个按钮:
通过e.getActionCommand()返回值判断按下了哪个按钮
事件类别 描述信息 接口名 方法
ActionEvent 激活组件 ActionListener actionPerformed(ActionEvent)
ItemEvent 选择某些项目(比如,复选框
。。。。还有很多个
事件适配器,为一些Listener接口(可能有多个方法)提供了适配器Adapter类。
通过继承事件所对应的Adapter类,只需要重写需要的类;
AWT组件库:Button,Checkbox,CheckboxGroup,Choice(下拉式),Canvas画布,创建自定义组件,TextField(单行文本输入),TextArea,List,Frame,Dialog,Filedialog,Menu(只能在MenuBar容器中),MenuBar(只能添加到Frame中)
Swing部分
AWT重量级,与具体平台相关,
Swing轻量级,在不同的平台上表现一致,并有能力提供本地窗口系统不支持的其他特性,纯java,没有本地代码采用MVC模式
import javax.swing.*
类层次结构(两个类型的组件):
顶层容器(JFrame,JApplet,JDialog,JWindow);注:一般以J开头,J*****
轻量级组件
Swing组件都是AWT的Container类的直接子类或者间接;
组件除了可以使用文字,还可以使用图标修饰自己;
swing开发流程:
1,引入Swing包
2,选择“外观和感觉”
3,设置顶层容器
4,设置按钮和标签
5,向容器中添加组件
6,在组件周围添加边界
7,事件处理
组件从功能上分:
顶层容器(JFrame,JApplet,JDialog,JWindow)
中间容器Panel,JScroll,JSplitPane,JToolBar
特殊容器JInternalFrame,JLayeredPane,JRootPane
基本控件,实现人机交互的组件:JButton,JComboBox,JList,JMenu,JSlider,JtextField;
不可编辑信息的显示:JLabel,JProgressBar,ToolTip;
可编辑信息的显示:JColorChooser,JFileChoose,JFileChooser,Jtable,JtextArea
JComponent默认双缓冲,提示信息,setToolTips()
与AWT组件不同,Swing组件不能直接添加到顶层容器中,它必须添加到一个与Swing顶层容器相关联的内容面板上,内容面板是顶层容器包含的一个普通容器,它是一个轻量级组件,基本规则:
把Swing组件放入一个顶层Swing容器的内容面板上
(方法一:frame.getContentPane().add(childComponent));
方法二: 建立一个JPanel或者JDesktopPane之类的中间容器,把组件添加到容器中,用setContentPane()
避免使用非Swing的重量级组件