gpt4 book ai didi

java - 如何创建对循环中创建的对象的引用?

转载 作者:行者123 更新时间:2023-12-02 09:50:00 24 4
gpt4 key购买 nike

我确信有人问过这个问题,但我一生都找不到它(在 SO 或 Google 上)。

如何最有效地创建对循环中创建的多个对象的引用?在本例中,我使用 Swing 将 JButton 添加到 GridLayout。

int numOfButtons = 10;
for (int i = 0; i < numOfButtons; i++){
add(new JButton("" + i));}

如果以后我想更改按钮上的文本,我该怎么做?假设我想更改 8 号按钮:

buttonEight.setText("DO NOT CLICK!!!);

如何从 buttonEight 创建对带有 8 的按钮的引用?

我唯一能想到的是在循环之前创建一堆实例变量。除了……好吧。实际上,这行不通(我不认为)

可以做到这一点的东西:

JButton button8;
for (int i = 0; i < numOfButtons; i++){

button + i = new JButton(""+ i);
//like, if i = 8 then button + i gets me button8 to reference it or something?
//obviously that doesn't work
}

button8.setText("DO NOT CLICK!!!);

如果 numOfButtons 是可变的,那么我在创建正确数量的实例变量时也会遇到麻烦。

我应该怎么做?

最佳答案

使用数组列表:

ArrayList<JButton> list=new ArrayList<>();
int numOfButtons = 10;
for (int i = 0; i < numOfButtons; i++){
JButton jb=new JButton("" + i);
list.add(jb);
add(jb);
}

稍后(假设您要更改第 8 个按钮(列表中的 7)的文本):

list.get(7).setText("...");

该列表仅创建对 JButton 对象的引用。然后对其所做的任何更改都会反射(reflect)在 UI 上。

关于java - 如何创建对循环中创建的对象的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56387123/

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