分享

- JFrame的使用

 liuzi02 2010-05-27

AsWing备忘录 - JFrame的使用

发布: 时间: 分类: AsWing

AsWing之中有许多实用的GUI组件,其中JFrame是比较常见的。JFrame模拟的是类似Windows那样的窗口,具有拖动、最大最小化、调整大小或者关闭等特性。熟练运用AsWing本来是应该先要了解一些其他的布局等基本知识的,不过因为是入门,所以先依样画葫芦再慢慢深入。下面从AS3代码来看看一个简单的JFrame。


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

 public class testFrame extends Sprite
 {
  private var frame:JFrame;
  public function testFrame()
  {
            AsWingManager.initAsStandard(this);
   frame = new JFrame(this,"This is JFrame");
   frame.setSizeWH(300,200);
   frame.show();
  }

 }
}


 (一) JFrame 的样貌和结构

运行结果如图所示,左边这个窗口就是JFrame组件,右边的我给它做了一些标记方便说明。可以看到JFrame是由好几个部分构成的,包括标题栏(TitleBar)、内容面板④(ContentPanel)、边框(Border)等。其中标题栏也是一个容器,里面又包含了图标(Icon)①、标题(Title)②、最小化按钮、最大化按钮、关闭按钮。可以通过SetTitleBar方法替换自己定义的标题栏,不过这属于进阶内容,暂且不表。

现在这个简单的JFrame已经具有拖动、调整、关闭等基本功能,不需要我们再额外去添加这些行为。唯一例外的,窗口的大小必须先指定,然后调用show()方法让它加入显示列表,否则运行结果就是空白的。

(二) JFrame 的常用设置
继用上面的代码,我们新创建的JFrame实例名字是frame,所以通过调用frame的各种方法,就可以对这个窗口进行控制。

frame.setIcon(null);  // 把图标设为空的,也可以把null改为其他自定义的Icon

frame.setTitle("Hello!");  //更改新的标题文字

frame.setSizeWH(300,200); //设置新的大小 宽和高

frame.setLocationXY(80,50); //设置坐标X,Y

frame.setClosable(true);  //设置窗口是否能够关闭,如果取值False 则关闭图标不显示。

frame.setResizable(true);  //设置窗口是否能够调整大小,如果False则最大最小化按钮无效,边界也会失去调整功能。

frame.setState(JFrame.MAXIMIZED);  //改变状态,让窗口最大化,MAXIMIZED是JFrame的静态属性,最小化是JFrame.ICONIFIED,正常化JFrame.NORMAL

frame.setDragDirectly(true);  //让窗口直接拖动,而不是默认的那种只显示一个框的效果。

frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);  // 把默认的关闭行为改成隐藏,点击关闭后只隐藏窗口

frame.closeReleased();  // 尝试关闭窗口,调用默认的关闭方法,也可以通过setDefaultCloseOperation指定想要的关闭函数。

(三) 在JFrame 里面添加组件。

JFrame对象本身是不能附加组件的,也就是说调用frame.append(...)这样的方法会出错,是不正确的。添加组件应该放在内容面板(Content Panel),内容面板是一个Container对象,添加到JFrame的组件都只能放到它上面。

首先要把内容面板引用出来:

   var box:Container = frame.getContentPane();

然后对box引用的对象就是上面提到的内容面板,直接对他进行添加组件操作即可,这里我们新建一个按钮,然后附加上去,至于按钮放上去以后会被放到什么位置,是由布局管理器决定的,暂时我们先绕开这个位置的问题,后面再专门对布局管理来研究。

   var btn:JButton = new JButton("Don't Click Me");
   box.append(btn);

 经过这些设置操作以后,原来的JFrame窗口变成了现在这个样子了:

(四) JFrame的事件

JFrame最大最小化、恢复正常都会发出相应的事件,某些状态改变也会发出事件。

这些事件是 FrameEvent 这个类的静态属性。FrameEvent 属于 org.aswing.event.FrameEvent ,使用前要先import。 状态事件则是InteractiveEvent.STATE_CHANGED。

例如监听JFrame的最大化事件语句:

frame.addEventListener(FrameEvent.FRAME_MAXIMIZED,__onWinMaxDoSomething);

其他相应的事件是:

FrameEvent.FRAME_MAXIMIZED 最大化

FrameEvent.FRAME_RESTORED 恢复

FrameEvent.FRAME_ICONIFIED 最小化

FrameEvent.FRAME_CLOSING 关闭事件

至于拖动窗口的事件,是由拖动管理器处理的,属于比较深的内容,暂且略过。

(五)小结

更多的方法和属性,可以参考AsWing的官方文档,它采用的是Adobe那种格式,全是英文的,凑合着看吧。左上方的框架是包列表,左下是类列表,右边就是相应的资料了。

以上所记载的都是抛砖引玉的入门而已,修行还是要靠个人的深入研究,亲自动手调试。

最后,附上这个案例的源代码:

testFrame01.zip

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多