http://iteedu.com/plang/java/jtswingchxshj/1.php#a
适配器实现了所有的接口方法,不过是空方法非抽象方法,在其子类中只要覆盖感兴趣的方法就行。这是一种设计模式,适配器设计,因为要实现所有的接口方法,数量实在太多了,有点不方便,才采用这种过渡类。
2.WindowAdapter里面的方法都不是抽象方法,这是匿名内部类的写法,里面new 后面写的名称是这个匿名类所实现的接口或者父类,返回的是匿名类对象
图形界面至少要有一个顶级Swing容器
顶级Swing容器为其它Swing组件在屏幕上的绘制和处理事件提供支持
常用的顶级容器:
JFrame(框架):表示主程序窗口
JDialog(对话框):每个JDialog对象表示一个对话框,对话框属于二级窗口
JApplet(小程序):在浏览器内显示一个小程序界面
一个框架包括边界、菜单栏、工具栏、状态栏,以及中间占主要部分的窗格
窗格也可以看作是一种面板,但它是框架的一个组成部分
组件不会直接放到框架上,而是放在若干个面板上,这些面板再放到窗格上
用框架对象的getContentPane()函数来获得窗格,再调用窗格的add()函数放置面板
//JFrame的三个层次从低到高:RootPane、LayeredPane、ContentPane
//RootPane默认是可视的,只要上面两层透明或不可见
//LayeredPane默认是透明的(Opaque)
//ContentPane默认可视,一般组件都在这一层
//JFrame.setBackground设置的颜色在RootPane层,所以当ContentPane设为不可见(它没有透明度)
类层次结构图:
java.lang.Object --java.awt.Compontent --java.awt.Container --javax.swing.JComponent --javax.swing.JLayeredPane
我们可把Swing容器的结构看似如下图所示:
|Grass Pane | Root Pane| | |Content Pane |Layered Pane| |Menu Bar
其中,Root Pane可以看成是虚拟的容器,包含着Grass Pane、Layered Pane、Content Pane与Menu Bar.Swing的容器包括JApplet ,JFrame,JDialog,JWindow与JInternalFrame都是构造在此结构上,JApplet、JFrame、JDialog、JWindow都是heavyweight容器,只 有JInternalFrame是lightweight容器。当我们要加入某个组件到Swing的容器中时,并不是直接加入到Root Pane,而是加入到 RootPane下面的某一成员(Layered Pane或Content Pane)
Content Pane与Menu Bar只是Layered Pane的其中一层,我们称此层为Frame-Content Layer.若你想知道Frame-Content Layer 在Layered Pane的层次是什么?你可以由JLayeredPane类中的Frame_Content_layer类常数取得