BoxLayout 对容器内组件进行平均分部,并且当容器改变大小时会对其内组件拉升以填满容器空间。
BoxLayout 有两种排列方式,水平(从右到左)排列,纵向(从上到下)排列。
[kml_flashembed movie="http://harryxu.cn/demo/aswing//BoxLayoutTest.swf" height="400" width="500" /]
package
{
import flash.display.Sprite;
import flash.display.StageScaleMode;
import org.aswing.AsWingManager;
import org.aswing.JFrame;
import org.aswing.JButton;
import org.aswing.JRadioButton;
import org.aswing.JAdjuster;
import org.aswing.JSlider;
import org.aswing.JLabel;
import org.aswing.BoxLayout;
import org.aswing.ButtonGroup;
import org.aswing.JPanel;
import org.aswing.event.InteractiveEvent;
public class BoxLayoutTest extends Sprite
{
private var boxLayout:BoxLayout;
private var frame:JFrame
private var radio1:JRadioButton;
private var radio2:JRadioButton;
private var gapLabel:JLabel;
public function BoxLayoutTest():void
{
this.stage.scaleMode = StageScaleMode.NO_SCALE;
this.stage.stageFocusRect = false;
AsWingManager.setRoot(this);
boxLayout = new BoxLayout();
boxLayout.setGap(5);
frame = new JFrame(this, "BoxLayoutTest");
frame.getContentPane().setLayout(boxLayout);
var button1:JButton = new JButton("button1");
var button2:JButton = new JButton("button2");
var button3:JButton = new JButton("button3");
frame.getContentPane().appendAll(button1, button2, button3);
frame.setY(50);
frame.setSizeWH(350, 150);
showRadios();
frame.show();
}
private function showRadios():void
{
radio1 = new JRadioButton("X_AXIS");
radio2 = new JRadioButton("Y_AXIS");
var group:ButtonGroup = new ButtonGroup();
group.append(radio1);
group.append(radio2);
var axisLabel:JLabel = new JLabel("Axis: ");
var radioPanel:JPanel = new JPanel();
radio1.addSelectionListener(onRadioChanged);
radio2.addSelectionListener(onRadioChanged);
radio1.setSelected(true);
radioPanel.appendAll(axisLabel, radio1,radio2);
gapLabel = new JLabel("Gap: ");
gapLabel.setPreferredWidth(50);
var slider:JSlider = new JSlider();
slider.setMinimum(0);
slider.setMaximum(20);
slider.setPreferredWidth(120);
slider.addEventListener(InteractiveEvent.STATE_CHANGED, onSliderChanged);
slider.setValue(5);
radioPanel.appendAll(gapLabel, slider);
radioPanel.setSizeWH(180, 50);
addChild(radioPanel);
radioPanel.validate();
}
private function onRadioChanged(e:InteractiveEvent):void
{
switch(e.target as JRadioButton)
{
case radio1:
boxLayout.setAxis(BoxLayout.X_AXIS);
break;
case radio2:
boxLayout.setAxis(BoxLayout.Y_AXIS);
break;
}
updateLayout();
}
private function onSliderChanged(e:InteractiveEvent):void
{
var slider:JSlider = (e.target as JSlider);
var v:int = slider.getValue();
boxLayout.setGap(v);
gapLabel.setText("Gap: " + String(v));
updateLayout();
}
private function updateLayout():void
{
frame.getContentPane().setLayout(boxLayout);
}
}
}
评论
有可能。。。。我那台老机器很久没更新了
jeff 发布
有可能。。。。我那台老机器很久没更新了
这个例子真形象,可以及时看到变化,不错!!! :lol:
iiley 发布
这个例子真形象,可以及时看到变化,不错!!! :lol:
我用ie6打开的时候报错:TypeError: Error
jeff 发布
我用ie6打开的时候报错:TypeError: Error #2007: 参数 type 不能为空。 at flash.events::EventDispatcher/addEventListener() at org.aswing::JRootPane$iinit() at org.aswing::JPopup$iinit() at org.aswing::JWindow$iinit() at org.aswing::JFrame$iinit() at BoxLayoutTest$iinit()
啊?
harry 发布
啊? 我这里看没有报错啊,是不是flashplayer版本不够?下载个最新版本试试: