使用方法重写标签
Rewrite labels using methods
所以更具体地说,我希望能够做到 "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);
更改标签
此处的真正要求:您想将名称(字符串)名称映射到某个 UI 元素(可能是 JLabel,可能是 JButton,谁在乎)。
答案:使用适当的数据结构,例如 Map<String, JComponent>
。
只需在某个时间点填充该地图:
Map<String, JComponent> componentsByName = new HashMap<>(); ...
componentsByName.put("label1", labelA);
因此,稍后,您只需执行 componentsByName.get()
即可通过其 "name" 检索...组件。然后调用您想对该对象调用的任何方法。
换句话说:您绝对不应该从事此类 if/else 链的业务。每当您的 UI 获得新事物或元素被删除时,您都必须更新无数地方的代码。
所以更具体地说,我希望能够做到 "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);
此处的真正要求:您想将名称(字符串)名称映射到某个 UI 元素(可能是 JLabel,可能是 JButton,谁在乎)。
答案:使用适当的数据结构,例如 Map<String, JComponent>
。
只需在某个时间点填充该地图:
Map<String, JComponent> componentsByName = new HashMap<>(); ...
componentsByName.put("label1", labelA);
因此,稍后,您只需执行 componentsByName.get()
即可通过其 "name" 检索...组件。然后调用您想对该对象调用的任何方法。
换句话说:您绝对不应该从事此类 if/else 链的业务。每当您的 UI 获得新事物或元素被删除时,您都必须更新无数地方的代码。