Java 使用生成的字符串引用jLabel来操作jLabel

Java 使用生成的字符串引用jLabel来操作jLabel,java,string,swing,jlabel,stringbuilder,Java,String,Swing,Jlabel,Stringbuilder,我有一个由2d int数组组成的网格 它基本上包含00、01、02等,不需要详细说明 我有一个提取网格位置的方法,然后使用字符串生成器操纵字符串,将其更改为“jxy”(x=x在网格中的位置,y=y在网格中的位置) 例如,如果x=1,y=3,那么该方法产生:“j13” 我所有的JLabel都是这样命名的,网格是8x8,所以它们被命名为:j00,j01,j02。。。j07、j10、j11等 如何使用生成的字符串操纵标签 例如,如果我想使用setText更改jLabel的文本,我将如何做 通常情况下,

我有一个由2d int数组组成的网格

它基本上包含00、01、02等,不需要详细说明

我有一个提取网格位置的方法,然后使用字符串生成器操纵字符串,将其更改为“jxy”(x=x在网格中的位置,y=y在网格中的位置)

例如,如果x=1,y=3,那么该方法产生:“j13”

我所有的JLabel都是这样命名的,网格是8x8,所以它们被命名为:j00,j01,j02。。。j07、j10、j11等

如何使用生成的字符串操纵标签

例如,如果我想使用setText更改jLabel的文本,我将如何做

通常情况下,情况如下:

j13.setText("Hello");
但是,我希望从我的方法中传入“j13”部分

同样,我不希望这仅限于使用setText,我还需要能够更改标签内的颜色/背景


我希望这不会太混淆我想要实现的目标

您不能通过使用字符串来给变量命名,但更重要的是,您不想这样做,因为变量名一开始并不那么重要。相反,您可能希望使用JLabel数组(一维或二维)并从数组索引中获取标签,或者创建并使用
HashMap

如果使用HashMap,首先需要使用其put方法将其填充为String/JLabel对,然后可以将该字符串用作键来提取感兴趣的JLabel

myMap.get("j13").setText("hello");
或者如果在一种方法中

public void setLabelText(String labelKey, String text) {
  myMap.get(labelKey).setText(text);
}
您可以这样称呼它:

setLabelText("j13", "Hello);
只要确保所有的键字符串都是唯一的,否则就会失败

关于这一点:

同样,我不希望这仅限于使用setText,我还需要能够更改标签内的颜色/背景


我建议您不要直接在类外部公开类字段,而是使用外部类可以调用的公共方法,因为这将使持有私有字段的类能够更完整地控制外部类可以执行的操作,从而减少产生不必要的副作用的机会。

我不尝试使用字符串,我试图使用从另一个方法生成的字符串访问标签函数,如setText。@silverzx:good。您的问题似乎与这一行不同,
j13.setText(“hello”)
似乎是您试图使用字符串作为变量名。无论如何,我已经给出了一个可能的解决方案,我建议您尝试一下。“j13.setText(“hello”)”j13是jLabels变量名,它是静态的,不受更改。jLabel的内容(如颜色、文本等)是我希望能够更改的内容,但无需将每个标签名称硬编码到地图或任何类似的内容中,这应该是不必要的。@silverzx:为什么不使用地图?这当然比尝试使用硬编码的变量名要好。你可以很容易地创建你的jlabel并在嵌套for循环中填充映射。我的大脑受伤了!我先休息一下,再考虑一下你的建议。我主要是想操纵颜色,所以我只是有点不明白如何使用地图将工作为我和我的应用程序。
setLabelText("j13", "Hello);