使用方法重写标签

时间:2018-11-16 13:50:39

标签: java swing methods jlabel

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

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);
    }
}

或我当前正在使用的内容:

    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);
        }
    }
}

(仅需几个变量,该方法就会变得很长)

相反,有一种类似这样的方法

public static void method( Labeltochange ,String TextToSet){
    if(Labeltochange.isVisible()==false){
        Labeltochange.setVisible(true);
        Labeltochange.setText(TextToSet);
    }
}

允许您通过执行method(LabelToChange, TextToSet);

来更改标签

1 个答案:

答案 0 :(得分:0)

这里的真正要求:您想将名称(字符串)名称映射到某个UI元素(可能是JLabel,也许是JButton,需要照顾)。

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

在某个时间点简单地填充该地图:

Map<String, JComponent> componentsByName = new HashMap<>(); ...
componentsByName.put("label1", labelA);

因此,稍后,您只需执行componentsByName.get()即可通过其“名称”检索...一个组件。然后调用要在该对象上调用的任何方法。

换句话说:您绝对不应该从事这种if / else连锁业务。每当您的UI遇到新事物或元素被删除时,您都必须在无数地方更新代码。