gpt4 book ai didi

java - 使用生成的字符串来引用 jLabel 来操作 jLabels

转载 作者:行者123 更新时间:2023-12-02 07:14:28 27 4
gpt4 key购买 nike

我有一个由二维 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com