Fluid idea for Life

随笔,杂记

aswing的使用心得

最近第一次使用aswing进行项目开发。以前虽然也看过不少aswing的资料,不过在实际项目中还是第一次。习惯了flex和flash的可视化操作,还真有些不习惯。

aswing的一个特点就是太灵活了,也许是因为对java的ui框架不熟悉的原因,很多习惯一时很难适应。经过几天的摸索,总算是慢慢有点感觉了。

有些组件,比如颜色拾取器,和flex中的操作习惯有区别,需要自己动手: [kml_flashembed movie="http://www.fluidea.cn/blog/wp-content/uploads/2008/07/colorpicker.swf" height="300" width="380" /]

package
{
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.display.Sprite;
	import flash.geom.Point;
	import org.aswing.ASColor;</p>
<p>	import org.aswing.AsWingManager;
	import org.aswing.EmptyLayout;
	import org.aswing.JFrame;
	import org.aswing.JButton;
	import org.aswing.JWindow;</p>
<p>	import org.aswing.border.CaveBorder;
	import org.aswing.colorchooser.JColorSwatches;
	import org.aswing.event.InteractiveEvent;
	import org.aswing.event.MovedEvent</p>
<p>	public class Main extends Sprite
	{</p>
<p>		private var btn:JButton;</p>
<p>		private var colorPicker:JColorSwatches;</p>
<p>		private var colorSwatches:JWindow;</p>
<p>		private var win:JFrame</p>
<p>		public function Main():void
		{
			init();
		}</p>
<p>		private function init():void {
			AsWingManager.initAsStandard(this);
			//
			win = new JFrame(this, "Color Picker Test");
			win.setSizeWH(360, 280);
			win.validate();
			win.show();
			this.addChild(win);</p>
<p>			win.setLocationXY(8, 8);
			win.getTitleBar().setCloseButton(null);
			win.getContentPane().setLayout(new EmptyLayout());</p>
<p>			btn = new JButton("select Color");
			btn.pack();
			win.getContentPane().append(btn);
			btn.setLocationXY(20, 20);</p>
<p>			btn.addActionListener(showColorPicker);</p>
<p>			colorPicker = new JColorSwatches();
			//colorPicker.addComponentColorSectionBar(btn);
			colorPicker.setBorder(new CaveBorder(null,6));
			colorPicker.setOpaque(true);
			colorPicker.pack();</p>
<p>			colorSwatches = new JWindow(this,false);
			colorSwatches.setContentPane(colorPicker);
			colorSwatches.setOpaque(true);
			colorSwatches.pack();</p>
<p>			colorPicker.addEventListener(InteractiveEvent.STATE_CHANGED, __colorChanged);
		}</p>
<p>		private function showColorPicker(e:Event):void {
			if (!colorSwatches.visible) {
				setPosition();</p>
<p>				stage.addEventListener(MouseEvent.MOUSE_UP,childUpOutside);
				colorSwatches.setVisible(true);
			}else {</p>
<p>				closeColorPicker();
			}
			e.stopImmediatePropagation();
		}</p>
<p>		private function closeColorPicker():void {
			stage.removeEventListener(MouseEvent.MOUSE_UP,childUpOutside);
			colorSwatches.setVisible(false);
		}</p>
<p>		private function childUpOutside(e:Event):void {
			if (e.target != colorPicker) {
				closeColorPicker();
			}
			e.stopImmediatePropagation();
		}
		private function setPosition():void {
			var point:Point = win.getContentPane().localToGlobal(new Point(btn.x, btn.y));			</p>
<p>			colorSwatches.x = point.x +btn.width + 2;
			colorSwatches.y = point.y;
		}</p>
<p>		private function __colorChanged(e:InteractiveEvent):void {</p>
<p>			win.setBackground(colorPicker.getSelectedColor())</p>
<p>			closeColorPicker();
		}
	}
}

Tags: aswing

上一篇: 多标签页面中,页面的关闭不会引发disconect事件
下一篇: AIR做的flv编辑器

访客评论

  1. #1 walktree 2008-07-29, 1:51 AM
    嗯,这个字很关键啊, :roll: ,哈哈
  2. #2 Y.Boy 2008-07-28, 3:54 PM
    噢... 我打漏了字...应该是:  ASwing我还没深入弄过...

    Flex 跟 ASwing, 在ASwing的官网上好像一个详细的比较报告的: )
  3. #3 walktree 2008-07-28, 1:29 PM
    呵呵,aswing和flex相比,各有优缺点,能增长见识。
  4. #4 Y.Boy 2008-07-28, 9:01 AM
    OH...
    有新文章了:)
    ASwing 我还深入弄过, 先做个标签:)