7.2 Swing基础
1.JFC(Java Foundation Classes):关于GUI组件和服务的完整集合,作为Java Se的一个有机部分,主要包含AWT、Java2D、Accessibility、Drag&Drop、Swing共5个部分;
2.Swing:JFC的一部分,提供按钮、窗口、表格等所有组件,纯Java组件;
Swing出现之前:AWT包,大多重量级组件,含有本地代码;
Swing组件名称是在原来AWT组件名称前加上J,如JButton、JCheckBox、JScrollbar等,是JComponent类的子类;
架构在AWT之上,是AWT的扩展而不是取代;
完全由Java语言编写,外观和功能不依赖于任何由宿主平台的窗口系统提供的代码,是轻量级组件;可以提供更丰富的视觉感受;
在Applet和Application中应用Swing:
在Applet中应用Swing,要将Swing组件加载到Applet容器上(通常是JApplet),通常在init方法中完成;
在Application中应用Swing,要将Swing组件加载到这个Application的顶层容器(通常是JFrame中);
7.3 Swing的层次
Component类:
包含paint、repaint方法,可以在屏幕上绘制组件;
大多数GUI组件直接或间接扩展Component;
Container类:
容器类,容纳相关组件;
包括add方法,用来添加组件;
包括setLayout方法,用来设置布局,帮助Container对象对组件定位和设置大小;
JComponent类(多数Swing组件的超类)
可定制的观感,即可根据需求定制观感;
快捷键(通过键盘直接访问GUI组件);
一般的事件处理功能;
Swing的组件和容器层次:
顶层容器:JFrame(单个主窗口),JDialog(二级窗口(对话框)),JApplet(在浏览器窗口中实现一个applet显示区域),都是重量级组件(必须和操作系统打交道),分别从原来AWT组件的Frame、Dialog和Applet类继承而来,每个使用Swing组件的Java程序必须至少有一个顶层容器放置其他组件;
中间层容器:一般用途的(JPanel、JScrollPane、JSplitPane、JTabbedPane、JToolBar),特殊用途的(JInternalFrame(多个子窗口)、JRootPane);
原子组件:直接与用户交互的组件,显示不可编辑信息的(JLabel、JProgressBar、JToolTip等),有控制功能可用来输入信息的(JButton、JCheckBox、JRadioButton等),能提供格式化信息并允许用户选择的(JColorChooser、JFileChooser、JTable、JTree等);