gpt4 book ai didi

java - 为什么这个类找不到这个数组?

转载 作者:行者123 更新时间:2023-11-30 03:43:19 25 4
gpt4 key购买 nike

我有一个在第一个类 (ColoredWordsExperiment) 中工作的数组,而第二个类 (ButtonHandler) 找不到它。

奇怪的是,如果我在 ButtonHandler 类中,替换 coloredWords.labels[i] 或简单地说“coloredWords.labels[1]” coloredWords.labels1,而在第一个类中我声明 JLabel labels1 = new JLabel; 它有效。

这基本上就是我最初拥有的,但由于我有 12 个标签,所以我决定使用数组。现在的问题是 ButtonHandler 类找不到变量“coloredWords.labels[i]”。

这是代码(我省略了不重要的内容,否则代码会很长):

public class ColoredWordsExperiment {
ButtonHandler buttonHandler;

ColoredWordsExperiment(){
JLabel[] labels = new JLabel[12];
for (i = 0; i < 12; i++) {
labels[i] = new JLabel("Press Button");
labels[i].setPreferredSize(new Dimension(90,40));
labels[i].setOpaque(true);
labels[i].setBackground(Color.white);
labels[i].setHorizontalAlignment(SwingConstants.CENTER);
labelContainer.add(labels[i]);
}

button1 = new JButton("Matching");
buttonHandler = new ButtonHandler(this);
button1.addActionListener(buttonHandler);
}

public static void main(String[] arg) {
new ColoredWordsExperiment();
}
}

-

class ButtonHandler implements ActionListener {
ColoredWordsExperiment coloredWords;
public ButtonHandler(ColoredWordsExperiment coloredWords) {
this.coloredWords = coloredWords;
}

@Override
public void actionPerformed(ActionEvent e){
if (e.getActionCommand().equals("Matching")) {
for (i = 0; i < 12; i++) {
coloredWords.labels[i].setText("Text changed");
}
}
}

最佳答案

JLabel[] labels 是在 ColoredWordsExperiment 类的构造函数内声明的变量。将其作为类中的字段移动并在类构造函数中初始化它:

public class ColoredWordsExperiment {
ButtonHandler buttonHandler;
//it should be declared here
JLabel[] labels;

ColoredWordsExperiment() {
//this is a variable inside the class constructor
//JLabel[] labels = new JLabel[12];
//this line initializes the labels field
labels = new JLabel[12];
// rest of your code...
}
}

此外,您还应该声明一个 getter 方法来获取 labels 变量内的 JLabel 之一,而不是直接访问该变量。这将使您的代码更清晰。

关于java - 为什么这个类找不到这个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26332509/

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