gpt4 book ai didi

java - 在 2 个独立的 JTable 中显示不同的数据

转载 作者:行者123 更新时间:2023-11-29 03:07:25 24 4
gpt4 key购买 nike

Array data[][] 在循环中存储正确的值。然后我将数组添加到 ArrayList,但当我之后更改数据数组的值时,就像 ArrayList 中的所有对象都在更新。

如何分别存储每个 Object[][] 的值?

for (int i = 0; i < Materia.length; i++) {
for (int j = 0; j < Materia[i].Aluno.length; j++) {
data[j][0] = Materia[i].Aluno[j].Nome;
System.out.println(data[j][1] = Materia[i].Aluno[j].Nome);//checking outpit, its displaying the correct data I want
data[j][1] = Materia[i].Aluno[j].nota;
data[j][2] = Materia[i].Aluno[j].frequencia;
}
tabs.add(data); //arraylist to storer object data
tabela[i] = new JTable((Object[][]) tabs.get(i), Names);//populate default table model
conteudo2[i] = new JPanel();
conteudo2[i].add(new JLabel(Materia[i].Nome));
conteudo2[i].add(new JScrollPane(tabela[i]));

}

最佳答案

您将(数组的)数据数组添加到选项卡列表。

由于在将新对象添加到 arrayList 之前没有创建新对象,它是同一个对象,因此当您更新选项卡列表中的对象时,您也更新了数据数组中的内容。

在将其添加到列表之前,您需要创建一个新的数据数组。

在将这个新对象添加到选项卡列表之前,您可以通过使用方法 System.arrayCopy 创建一个新的二维数组来实现这一点:

Object[][] myDataCopy = new Object[data.length][];
for(int i = 0; i < data.length; i++) {
myDataCopy[i] = new XXYY[d.length];
System.arraycopy(data[i], 0, myDataCopy[i], 0, data[i].length);
}

关于java - 在 2 个独立的 JTable 中显示不同的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31416113/

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