在GWT中使用字符串变量作为对象

时间:2013-10-01 19:16:37

标签: java string gwt object radio-button

我有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返回一组要禁用的单选按钮,但它们将作为String返回。返回的字符串变量是名称作为对象名称(在本例中为oneA101)。但是,我不能使用String变量来禁用单选按钮。如何使用String变量对具有相同对象名称的单选按钮进行操作?

1 个答案:

答案 0 :(得分: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的生命周期,如果使用不当会导致问题!)