gpt4 book ai didi

Java:更新 ArrayList 中的 GUI 元素

转载 作者:行者123 更新时间:2023-12-01 14:59:10 25 4
gpt4 key购买 nike

我必须为我的 Java 学校期末作业创建一个游戏。在其中,我使用自定义的“Peg”对象填充 JPanel,这些对象在 for 循环中扩展 JComponentJPanel 使用GridBagLayout。在 for 循环内,我将“Peg”对象添加到 ArrayList,然后从该 ArrayList 获取元素并将其添加到 JPanel 。这一切都是通过如下所示的方法完成的:

public void createDummyPegs()
{
for (int i = 0; i < 13; i++)
{
initPegsArray.add(new ArrayList<>());
dummyPegsConstraints.gridy = i;

for (int j = 0; j < 5; j++)
{
dummyPegsConstraints.gridx = j;

if (i == 0)
{
tempColorPeg = new ColorPeg(Color.DARK_GRAY);
initPegsArray.get(i).add(j, tempColorPeg);
pegsLeftPanel.add((JComponent) initPegsArray.get(i).get(j),
dummyPegsConstraints);
}
else
{
tempDummyPeg = new DummyPeg();
initPegsArray.get(i).add(j, tempDummyPeg);
pegsLeftPanel.add((JComponent) initPegsArray.get(i).get(j),
dummyPegsConstraints);
}
}
}
}

这工作得很好,并且它很好地生成了这些“Peg”对象的网格。问题是:我有一个按钮,理想情况下应该用另一个不同颜色的“Peg”对象替换这些“Peg”对象之一。当我点击按钮时:

  • 使用新的不同颜色创建新的“Peg”对象;
  • ArrayList 中删除一个元素,我们选择第一个元素;
  • 将新的“Peg”添加到旧“Peg”曾经所在的位置(当然假设它最终将位于旧“Peg”曾经所在的位置,并且其他所有内容都会向右移动 1 .

或者,我尝试使用 set() 方法仅使用新的“Peg”更新给定位置的元素。问题是,当我添加新的“Peg”元素时,它似乎没有用大小初始化。将这个新的“Peg”发送到 System.out.println() 语句以读取其中的内容,它会打印出:

com.rburgos.mastermindtestlayout.ColorPeg[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=0,maximumSize=,minimumSize=,preferredSize=]

我不明白为什么第一次添加到 ArrayList 时它可以工作,但第二次却不行。

任何指导建议将不胜感激。如果有帮助的话,这是完整的代码:

最佳答案

我觉得很傻,但我想我能弄清楚。在向数组添加新的“Peg”并将其传递给 JPanel 后,我调用了 update()。现在,通过调用 revalidate(),新的“Peg”将添加到面板中。希望这能帮助其他遇到类似问题的人。

关于Java:更新 ArrayList 中的 GUI 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13926355/

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