想做一个较为简单的聊天界面,用到了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 关闭事件
- */