隐藏Flex面板中的内容窗格

时间:2010-08-20 00:01:59

标签: flex actionscript-3 flex3

我在Flex 3.2中编写了一个扩展面板组件的自定义组件。在用户执行某个操作后,我想隐藏Panel组件中的主要内容区域,以及控制栏(如果指定了一个)。关于如何做到这一点的任何想法? controlBar.visible似乎没有隐藏控制栏,除了遍历主面板的所有子项之外,我不知道另一种访问主要内容区域的简单方法,我想尽可能避免这种情况。感谢

2 个答案:

答案 0 :(得分:0)

无法设置一个主容器,无论是HBox还是VBox等......在Panel中包含所有子容器,然后您可以根据用户的操作切换此容器可见性。

对于ControlBar,您应该能够更改其可见性值...

答案 1 :(得分:0)

你似乎无法隐藏控制栏的原因是因为你只是设置它的可见属性 - 它仍占用它的空间。所以,要真正“隐藏”它,请执行以下操作:

myControlBar.includeInLayout = false;

另外,要隐藏所有孩子,只需要一个简单的循环:

for each (var oChild:DisplayObject in idPanel.getChildren()) {
    oChild.visible = false;
}

所以,整个应用程序看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

<mx:Script>
    <![CDATA[
        private function doit(): void {
            idControl.visible = false;
            idControl.includeInLayout = false;

            for each (var oChild:DisplayObject in idPanel.getChildren()) {
                oChild.visible = false;
            }
        }
    ]]>
</mx:Script>

<mx:Button x="10" y="10" label="Button" click="doit()"/>
<mx:Panel x="83" y="10" width="250" height="200" layout="absolute" id="idPanel">
    <mx:CheckBox x="10" y="10" label="Checkbox"/>
    <mx:DateField x="10" y="40"/>
    <mx:ControlBar id="idControl">
    </mx:ControlBar>
</mx:Panel>

</mx:Application>

希望有所帮助!