我有一个由二维 int 数组组成的网格。
基本包含00、01、02等,无需赘述。
我有一种提取网格位置的方法,然后使用字符串生成器操作字符串,将其更改为“jxy”(x = 网格中的 x 位置,y = 网格中的 y 位置)。
public String getXYstring() {
int x = getX();
int y = getY();
StringBuilder sb = new StringBuilder();
sb.append("j");
sb.append(x);
sb.append(y);
String posXY = sb.toString();
return posXY;
}
例如,如果 x=1 且 y=3,则该方法会生成:“j13”。
我所有的jLabel都是这样命名的,网格是8x8,所以它们被命名为:j00,j01,j02 ... j07,j10,j11等。
如何使用生成的字符串操作标签?
例如,如果我想使用 setText 更改 jLabel 的文本,我该怎么做?
通常情况下会是这样的:
j13.setText("Hello");
但是我希望从我的方法中传入“j13”部分!
同样,我不希望仅限于使用 setText,我还需要能够更改标签内的颜色/背景。
我希望这不会让我想要实现的目标变得太困惑!
最佳答案
您不能使用字符串来指定变量名称,但更重要的是,您不想这样做,因为变量名称一开始并不是那么重要。相反,您可能想要使用 JLabel 数组(一维或二维)并从数组索引中获取标签,或者创建并使用 HashMap<String, JLabel>
如果您使用 HashMap,您首先需要使用其 put 方法用 String/JLabel 对填充它,然后您可以使用 String 作为键来提取感兴趣的 JLabel。
myMap.get("j13").setText("hello");
或者如果在方法中,
public void setLabelText(String labelKey, String text) {
myMap.get(labelKey).setText(text);
}
你会这样称呼:
setLabelText("j13", "Hello);
请务必确保所有关键字符串都是唯一,否则将会失败。
关于这一点:
Likewise I don't want this to be restricted to just using setText, I also need to be able to change the colour/background within the label.
我建议您不要直接在类外部公开类字段,而是使用外部类可以调用的公共(public)方法,因为这将使持有私有(private)字段的类更完全地控制外部类可以执行的操作,从而减少出现不良副作用的可能性。
关于java - 使用生成的字符串来引用 jLabel 来操作 jLabels,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15095241/