0

我有 20 个单选按钮作为单独的停车位。我需要根据可用性启用或禁用。通常,我已将它们声明为

   final RadioButton oneA101 = new RadioButton("new name", "New radio button");

以下似乎不起作用:

   String[] allSlotsToDisable={"oneA101","oneB101","oneA102","oneB102"};
    Object[] rb={};

    for(int i=0;i<allSlotsToDisable.length;i++){
        rb[i]=allSlotsToDisable[i];
        ((FocusWidget) rb[i]).setEnabled(false);
    }

DB 返回一组单选按钮,这些单选按钮旨在被禁用,但它们以字符串形式返回。返回的字符串变量是作为对象名称的名称(在本例中为 oneA101)。但是,我不能使用字符串变量来禁用单选按钮。如何使用 String 变量作用于具有相同对象名称的单选按钮?

4

1 回答 1

3

将其放入地图中,然后您可以通过它们的名称(或您想要的任何其他字符串...)访问它们

private final Map<String,RadioButton> buttonMap = new HashMap<String,RadioButton>();

然后在代码的后面,在创建按钮时:

final RadioButton oneA101 = new RadioButton("new name", "New radio button");
buttonMap.put("new name", oneA101);

然后甚至更晚,当您需要解决它们时:

RadioButton buttonToDoStuffWith = buttonMap.get("new name");

在你的例子中

String[] allSlotsToDisable={"oneA101","oneB101","oneA102","oneB102"};

for(String toDisable:allSlotsToDisable){
    RadioButton button = buttonMap.get(toDisable);
    if(button!=null) {
        button.setEnabled(false);
    }
}

(当然要注意这个hashmap的生命周期,如果使用不当可能会出问题!)

于 2013-10-01T19:21:41.897 回答