首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用方法重写标签

使用方法重写标签
EN

Stack Overflow用户
提问于 2018-11-16 13:50:38
回答 1查看 64关注 0票数 2

因此,更具体地说,我希望能够执行"changeLabel(lableHere,textHere)“,但我不知道如何指定标签。为了简化我的请求,我想从

代码语言:javascript
复制
public static void method1(String TextToSet){
    if(variable.isVisible()==false){
        variable.setVisible(true);
        variable.setText(TextToSet);
    }else if(variable.isVisible()==true){
        variable.setVisible(false);
    }
}
public static void method2(String TextToSet){
    if(variable2.isVisible()==false){
        variable2.setVisible(true);
        variable2.setText(TextToSet);
    }else if(variable2.isVisible()==true){
        variable2.setVisible(false);
    }
}

或者我现在用的是:

代码语言:javascript
复制
    public static void method(String VariableIWantToChange, String TextToSet){
    if(VariableIWantToChange.equalsIgnoreCase("Variable1"){
        if(Variable1.isVisible()==false){
            Variable1.setVisible(true);
            Variable1.setText(TextToSet);
        }
        else if(Variable1.isVisible()==true){
            Variable1.setVisible(false);
        }
    }
    if(VariableIWantToChange.equalIgnoreCase("Variable2"){
        if(Variable2.isVisible()==false){
            Variable2.setVisible(true);
            Variable2.setText(TextToSet);
        }
        else if(Variable2.isVisible()==true){
            Variable2.setVisible(false);
        }
    }
}

(这个方法在仅仅几个变量之后就变得很长了)

相反,有一个方法是这样的

代码语言:javascript
复制
public static void method( Labeltochange ,String TextToSet){
    if(Labeltochange.isVisible()==false){
        Labeltochange.setVisible(true);
        Labeltochange.setText(TextToSet);
    }
}

,它允许您通过执行method(LabelToChange, TextToSet);更改标签。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-16 14:06:27

这里的真正要求是:您希望将名称(String)名称映射到某个UI元素(可能是JLabel,可能是JButton,谁在乎)。

答案是:使用n个适当的数据结构,如Map<String, JComponent>

只需在某个时间点填充映射的:

代码语言:javascript
复制
Map<String, JComponent> componentsByName = new HashMap<>(); ...
componentsByName.put("label1", labelA);

所以,稍后,您只需做一个componentsByName.get()检索..。以“名称”命名的组件。然后调用您想在该对象上调用的任何方法。

换句话说:你绝对不应该做这样的事情,如果/否则链。每次你的UI得到一个新的东西,或者一个元素被删除,你必须在无数的地方更新代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53339173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档