AsWing 入门教程 1.3 给框架定位

AsWing 入门教程 1.3 给框架定位

 

作者:胡矿

 

著作权所有,请勿转载

 

www.flashseer.org

 

Google doc

http://docs.google.com/Doc?id=dnp8gdz_3gdr96f

 

 

    JFrame类本身只有几个用来改变框架外观的类。当然,通过继承,JFrame从不同的超类中(比如JWindow, Component)继承来很多用于处理框架的大小和位置的方法:

  • dispose方法——关闭窗口并且回收用语创建窗口的任何资源;
  • setIcon方法——用一个Icon对象设置窗口的图标,比如AttachIcon 和 LoadIcon;
  • setTitle——改变标题栏当中的文字;
  • setResizable——使用 Boolean 参数来决定框架大小是否能被用户改变。
  • setClosable——使用 Boolean 参数来决定框架是否能被用户关闭。

 

    图1.3-1当中给出了JFrame类的继承链。

(图1.3-1)

    需要对 Component 类和 JWindow 类(它是JFrame类的父亲)进行仔细研究,在它们中能够找到缩放和改造框架的方法。例如,用于显示框架的show方法定义在JPopup类中。再例如,Component类中的setLocationXY方法是重定位一个组件的几种方法之一。如果你调用:

setLocationXY(x, y);

 

    那么左上角被放到水平x像素、垂直y像素处((0,0)是屏幕左上角)。与此类似,Component中的setComBoundsXYWH方法允许你在一次操作中设定一个组件(特别是JFrame)的大小和位置,其形式为:

 

setComBoundsXYWH(x, y, width, height) ;


 


 

笔记:
对于框架,setLocationXY 和 setBoundsXYWH 中的坐标均是相对于整个屏幕的。在后面的章节还会看到,对于容器内的组件,其坐标是相对与容器的。


 

 

    要记住:如果不明确定义框架的大小,那么其默认大小是0乘0像素。为了是例子程序尽可能简单,我们把框架设成能为大多数显示设置所能够接受的程度。

 


提醒:
本节所介绍的API是使框架具有正确观感的重要方法。这些方法的一部分定义在JFrame类当中;另一部分则定义在JFrame的各个父类当中。所以,你需要通过API文档来查找是否有完成特定目的的方法。遗憾的是,研究SDK文档相当费力。对于子类来说,API文档只是说明其覆盖的方法。例如,show对于JFrame类型的对象来说是可用的,但是由于它是从JPopup类继承而来,所以JFrame文档没有说明它。如果你认为应该有一个方法能够达到目的,但你使用的这个类的文档中却没有说明它,那么你应该在该类的超类API文档中查找这个方法。每个API页的顶部都有超链接到它的超类API页,并且每页在新方法和覆盖方法的总结下面都有一个继承的方法列表。

 

 

    在本节末尾,我们给出一个简单的例子,以说明窗口操作。在例子中,那个可以关闭的框架具有如下特点:
      1.其面积是整个舞台得四分之一
      2.显示在舞台的中央


    比如,舞台的大小是800×600像素,那么框架的大小就是400×300,它的左上角定位在(200, 150)。使用下面的步骤,可以得到舞台的大小。代码如下:

var bounds:IntRectangle = AsWingUtils.getVisibleMaximizedBounds();
var stageWidth:uint = bounds.width;
var stageHeight:uint = bounds.height;

   完整的代码见例1.2。

例1.2

 

package
{
        import flash.display.Sprite;
        import org.aswing.JFrame;
        import org.aswing.AsWingManager;

        public class CenteredFrameTest extends Sprite
        {
                public function CenteredFrameTest()
                {
                        AsWingManager.initAsStandard(this);
                       
                        var frame:MyCenteredFrame = new MyCenteredFrame();
                        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                        frame.show();
                }
               
        }
}
        import org.aswing.JFrame;
        import org.aswing.geom.IntRectangle;
        import org.aswing.AsWingUtils;
        import org.aswing.LoadIcon;
       
class MyCenteredFrame extends JFrame
{
        public function MyCenteredFrame()
        {
                //获取舞台可视区域的大小
                var bounds:IntRectangle = AsWingUtils.getVisibleMaximizedBounds();
                var stageWidth:uint = bounds.width;
                var stageHeight:uint = bounds.height;
               
                //把框架放在中心
                this.setSizeWH(stageWidth/2, stageHeight/2);
                this.setLocationXY(stageWidth/4, stageHeight/4);
               
                //设置标题和图标
                var icon:LoadIcon = new LoadIcon("icon.png");
                this.setIcon(icon);
                this.setTitle("置于正中的框架");
        }
}

API:org.aswing.Component

  • isVisible() : Boolean
    检查组件是否可见。组件初始化为可见的,但顶层组件,如JFrame,除外。

 

  • setVisible(b:Boolean) : void
    根据b的取值来决定是显示组件还是隐藏组件。

 

  • isShowing() : Boolean
    检查组件是否正显示在舞台上。若是,它必须是可见的并且它所有的父元件也是可见的。

 

  • isEnabled() : Boolean
    检查组件是否被激活。被激活的组件能够接受键盘和鼠标的输入。组件初始为被激活。

 

  • setEnabled(Boolean b) : void
    激活或者禁用一个组件。

 

  • getLocation() : IntPoint
    返回该组件左上角坐标值,该值是相对于包围容器的左上角而言。(一个 IntPoint 对象 p 封装了一个x坐标和一个y坐标,访问它们使用p.x和p.y)

 

  • getGlobalLocation() : IntPoint
    返回该组件的左上角坐标值,该值使用的是舞台坐标。

 

  • setComBounds(b:IntRectangle):void
    setComBoundsXYWH(x:int, y:int, w:int, h:int):void
移动组件并且设置组件的大小。(一个IntRectangle 对象 rect 封装了x坐标、y坐标以及宽度width和高度height,访问它们使用 rect.x 、rect.y、rect.width、rect.height)

 

  • setLocationXY(x:int, y:int):void
    setLocation(newPos:IntPoint):void
    把组件移动到新位置。如果该组件不是顶层组件,那么x和y坐标(或者p.x和p.y)使用该容器的坐标;如果该组件是顶层组件(例如JFrame),那么坐标使用舞台坐标。

 

  • getSize(rv:IntDimension=null):IntDimension
    得到组件的当前大小。

 

  • setSize(newSize:IntDimension):void
    setSizeWH(w:int, h:int):void
    重设组件大小为指定的高度和宽度。


API:org.aswing.JWindow

  • toFront():void
    把该窗口显示到任何其它窗口的前面

 

  • toBack():void
    把该窗口移动到窗口栈的最后面,并且相应地重新排列所有可见窗口。


API:org.aswing.JFrame

  • setResizable(b:Boolean):void
    决定用户是否可以缩放框架

  • setClosable(b:Boolean):void
决定用户是否可以关闭框架

 

  • setTitle(t:String):void
    把框架的标题栏中的文字设为字符串t。

 

  • setIcon(ico:Icon):void
    参数 ico,需要用作框架图标的图像,比如 AttachIcon 或者 LoadIcon

 

  • getState():int
    setState(s:int, programmatic:Boolean=true):void
    获取或者设置框架的状态。状态是如下值之一:

               JFrame.NORMAL
               JFrame.ICONIFIED;
               JFrame.MAXIMIZED
               JFrame.MAXIMIZED_HORIZ
               JFrame.MAXIMIZED_VERT


API:org.aswing.AsWingManager

  • initAsStandard(root:DisplayObjectContainer):void
    用一个可显示容器来对AsWing做全局初始化,这个方法必须在任何别的AsWing方法之前被调用,并且root的stage属性不为null





API:org.aswing.AsWingUtils

  • getVisibleMaximizedBounds(dis:DisplayObject=null):IntRectangle
    获取当前舞台的可显示区域大小



API:org.aswing.LoadIcon

  • 构造函数
    LoadIcon(url:*, Number=-1, height:Number=-1, scale:Boolean=false, context:LoaderContext=null)
    参数:
    url :要加载的图表图片的 url, 图标图片加载之后就不能再更改
    height:图标的高度
    width:图标的宽度
    scale:决定是否根据图标的高度和宽度来缩放图片,默认为不缩放,不过建议设为缩放
原文地址:https://www.cnblogs.com/fxair/p/1669986.html