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 楼答案
这里真正的需求是:您想要将一个名称(字符串)名称映射到某个UI元素(可能是一个JLabel,可能是一个JButton,谁在乎呢)
答案是:使用合适的数据结构,比如
Map<String, JComponent>
只需在某个时间点填写地图:
所以,稍后,您只需执行
componentsByName.get()
来检索。。。按其“名称”命名的组件。然后调用您想在该对象上调用的任何方法换句话说:你绝对不应该涉足这样的if/else链。每当你的用户界面有了新东西,或者一个元素被删除,你就必须在无数个地方更新代码