有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用方法重写标签

因此,更具体地说,我希望能够做到“更改标签(标签在这里,文本在这里);” 但我不知道如何指定标签。 为了简化我的请求,我想从

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) 个答案

  1. # 1 楼答案

    这里真正的需求是:您想要将一个名称(字符串)名称映射到某个UI元素(可能是一个JLabel,可能是一个JButton,谁在乎呢)

    答案是:使用合适的数据结构,比如Map<String, JComponent>

    只需在某个时间点填写地图:

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

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

    换句话说:你绝对不应该涉足这样的if/else链。每当你的用户界面有了新东西,或者一个元素被删除,你就必须在无数个地方更新代码