最近第一次使用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(); } } }