AsWing中JFrame的简单应用
想做一个较为简单的聊天界面,用到了AsWing,发现AsWing不是一会就能掌握的东东。E文好的相对较快点吧。最后效果如下:
整体就3个组件,分别是JFrame,JTextArea,JTextInput。代码如下:
package
{
import flash.display.Sprite;
import org.aswing.JComboBox;
import org.aswing.JTextArea;
import org.aswing.UIManager;
import org.aswing.ppzhao.PPZhaoFrameIcon;
import org.aswing.ppzhao.PPZhaoLAF;
import org.aswing.AsWingManager;
import org.aswing.BorderLayout;
import org.aswing.Container;
import org.aswing.FlowLayout;
import org.aswing.JFrame;
import org.aswing.JPanel;
/**
* ...
* @author DefaultUser (Tools -> Custom Arguments...)
*/
public class ChatFrame extends Sprite
{
public var f:JFrame;
public var p:JTextArea;
public function ChatFrame()
{
UIManager.setLookAndFeel(new PPZhaoLAF());
super();
AsWingManager.initAsStandard(f);
init();
}
private function init():void {
//布局模式BorderLayout
f = new JFrame(this, "聊天框");
f.setSizeWH(540, 400);
var c:Container = f.getContentPane();
p = new JTextArea();
c.append(p, BorderLayout.CENTER);
var buttonPanel:JPanel = new JPanel(new FlowLayout());
var undoBtn:JComboBox = new JComboBox();
var a:Array = [10,20,30];
undoBtn.setListData(a);
undoBtn.setEditable(true);
c.append(undoBtn, BorderLayout.SOUTH);
f.show();
f.setClosable(false);
}
}
}
//以下为JFrame的常用属性:
/*
(一) JFrame 的常用设置
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最大最小化、恢复正常都会发出相应的事件,某些状态改变也会发出事件。
这些事件是 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 关闭事件
*/