AsWing当中的顶层窗口(即那些没有包含在其它窗口当中的窗口)被称作框架(JFrame)。他从JWindow扩展而来,是少数几个不绘制在画布上的AsWing组件之一。
注意
大部分AsWing组件类的名字都已“J”开头,如JButton、JFrame等等。
框架是一种容器。这意味着一个框架可以容纳按钮、文本域登其它用户界面组件。本节中,我们要研究AsWing JFrame 的常规用法。
例1.1-1是一个简单的程序,它在屏幕上显示一个空的框架,如图1.1-1所示。
(图1-1 )
例1.1-1:SimpleFrameTestpackage
{
import flash.display.Sprite;
import org.aswing.AsWingManager;
import org.aswing.JFrame;
public class SimpleFrameTest extends Sprite
{
public function SimpleFrameTest()
{
AsWingManager.initAsStandard(this);
var frame:SimpleFrame = new SimpleFrame();
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.show();
}
}
}
import org.aswing.JFrame;
class SimpleFrame extends JFrame
{
public function SimpleFrame()
{
this.setSizeWH(DEFAULT_WIDTH, DEFAULT_HEIGHT);
}
public static const DEFAULT_WIDTH:uint = 300;
public static const DEFAULT_HEIGHT:uint = 200;
}
下面我们逐行研究这个程序。
AsWing被放在org.aswing包中。这不是AS3.0的核心层次的一部分,而是一个第三方扩展。
默认情况下,框架的尺寸和其它组件一样是没有意义的0×0像素。我们定义了子类 SimpleFrame,它的构造器把框架的大小设为300×200像素。在SimpleFrameTest的构造函数当中(注意,Flex项目的程序入口不再是MTASC时代的main函数,而是Sprite的构造函数),我们从构造一个SimpleFrame对象开始。
接着,我们定义了用户关闭框架时的响应动作。对本程序而言,我们只是简单地销毁该框架。选择该行为的语句是:
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
因为A3的DisplayObject可以remove了然后再add,所以Dispose了之后也可以再show而不用重新创建元件。所以默认情况下,当用户关闭一个框架的时候,框架就会被销毁(Dispose),你也可以通过设置此属性为JFrame.HIDE_ON_CLOSE或者JFrame.DO_NOTHING_ON_CLOSE让框架在被点击关闭按钮时隐藏或者什么都不做。
简单地构造一个框架并不能显示它。框架在建立时是不可见的。这使得程序员有机会在框架初次显示前为其添加一些组件。为了显示框架,我们需要调用框架的show方法。
笔记
JFrame 类继承了超类 JPopup 当中的 show 方法。在内部实现上show方法是直接调用了setVisible(true),你也可以通过调用setVisible(true)来显示框架,效果是一样的。
对于普通组件,默认是visible=true的,所以通常不用再调用setVisible(true)。
图1.1-1展示的是一个运行中的程序——只有一个很枯燥的顶层窗口。在图中可以看到,标题栏和外框修饰部件,比如大小化按钮。他们的样式都是由特定的主题(LookAndFeel)所决定的。