【问题标题】:Show different data in 2 separate JTables在 2 个单独的 JTable 中显示不同的数据
【发布时间】:2015-07-14 19:56:36
【问题描述】:

数组 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 中出现什么?
  • 当我添加 ArrayList 时,我希望 object[][] 数据处于相同状态。

标签: java arrays swing


【解决方案1】:

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

由于您在将新对象添加到arrayList之前没有创建新对象,因此它是同一个对象,因此您在更新tab-List中的对象时也会更新data-Array中的内容。

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

在将这个新对象添加到标签列表之前,您可以通过使用 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);
}

【讨论】:

  • 非常感谢,尝试理解并在我的代码上实现
  • 解决问题了吗?
  • 我不明白 dMatrix 是什么。环顾四周,我认为它可能是 TypeofData[] d,至少我理解了这个概念,但仍然必须正确实现它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-22
  • 2011-07-18
  • 2021-06-28
  • 1970-01-01
相关资源
最近更新 更多