zoukankan      html  css  js  c++  java
  • 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:决定是否根据图标的高度和宽度来缩放图片,默认为不缩放,不过建议设为缩放
  • 相关阅读:
    Bootstrap3 表格-条纹状表格
    Bootstrap3 表格-基本表格
    Bootstrap3 代码-程序输出
    Bootstrap3 代码-变量
    垃圾回收相关(深入理解Java虚拟机中的内容)
    JVM内存管理及GC机制
    关于Spring IOC (DI-依赖注入)需要知道的一切
    关于 Spring AOP (AspectJ) 该知晓的一切
    JDK1.8源码分析之HashMap
    深入理解Java类加载器(ClassLoader)
  • 原文地址:https://www.cnblogs.com/fxair/p/1669986.html
Copyright © 2011-2022 走看看