apache-flex 在fx中声明RadioButtonGroup:声明

uxhixvfz  于 2022-11-01  发布在  Apache
关注(0)|答案(1)|浏览(185)

我有Flex代码,它在fx:declaration部分声明了单选按钮组,用于非GUI组件。

<fx:Declarations>       
<s:RadioButtonGroup id="rdbtnlan"/>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>

这样做的目的是什么?按钮的使用方式如下:

protected function rdbtn1_clickHandler(event:MouseEvent):void
{
    // TODO Auto-generated method stub
    if(rdbtnlan.selection.value == "Eng")
        var dbResult:SQLResult = sqlcon.SQLCon("Update setting Set Language ='Eng'");
    else if(rdbtnlan.selection.value == "Hindi")
        var dbResult:SQLResult = sqlcon.SQLCon("Update setting Set Language ='Hindi'");
    init();
}

此外,这些按钮在其标记中引用单选按钮组:

<s:VGroup x="241" y="366" horizontalAlign="left" styleName="tabStyle" layoutDirection="ltr" id="rdbtn1">
        <s:RadioButton id="rdSetEng" label="English" color="Black" groupName="rdbtnlan"
                               value="Eng"  click="rdbtn1_clickHandler(event)"/>
        <s:RadioButton id="rdSetHindi" label="Hindi" color="Black" groupName="rdbtnlan"
                               value="Hindi"  click="rdbtn1_clickHandler(event)"/>
    </s:VGroup>
cidc1ykv

cidc1ykv1#

documentation所述:
RadioButtonGroup组件定义一组RadioButton组件,这些组件充当单个互斥组件;因此,用户一次只能选择一个RadioButton组件。
请注意,您的程式码片段包括:

if(rdbtnlan.selection.value == "Eng")

rdbtnlan是 * 按钮组 *,而不是对特定按钮的引用。您要问“为这组按钮选择的值是多少?”
如果没有按钮组,您需要遍历组件中的所有按钮,并逐个检查它们,例如:

if (rdSetEng.selected) {
    var dbResult:SQLResult // ...
else if (rdSetHindi.selected) {
    var dbResult:SQLResult // ...
}

还要注意,不能保证rdSetEngrdSetHindi都没有被选中--必须编写逻辑来取消选中每个按钮的click处理程序中的其他单选按钮。

相关问题