【问题标题】:Put two arrays to Jtable rows将两个数组放入 Jtable 行
【发布时间】:2013-03-01 03:04:04
【问题描述】:

我有两个数组,它们的元素数量相等。我想把它放在 JTable 行中(就像下面的 ascii 表示例)。我对两个数组都使用了表模型和循环,但我存档了其他东西(见打印屏幕)。 注意:我想保持两个数组元素之间的对应关系,就像在 ascii 表示例中一样。

                    Integer[] intArray = new Integer[stringArray.length];
                    for (int i = 0; i < stringArray.length; i++) {
                        intArray[i] = Integer.parseInt(stringArray[i]);
                    }

                    System.out.println(Arrays.toString(intArray)); //output [285, 715, 1437, 1749]


                    Integer[] intArray1 = new Integer[stringArray1.length];
                    for (int i = 0; i < stringArray1.length; i++) {
                        intArray1[i] = Integer.parseInt(stringArray1[i]);
                    }

                    System.out.println(Arrays.toString(intArray1)); //output [0, 0, 1087, 0]


                    DefaultTableModel modelPeaks = new DefaultTableModel();
                    JTable table = new JTable(modelPeaks);


                    modelPeaks.addColumn("1st Column");
                    modelPeaks.addColumn("2nd Column");


                    for (int i = 0; i < intArray.length; i++) {
                        for (int j = 0; j < intArray1.length; j++) {

                            modelPeaks.addRow(new Object[]{intArray[i], intArray1[j]});
                        }
                    }

输出是:

但我想存档:

+--------------------+--------------------+
+   1st Column       +    2nd Column      +
+--------------------+--------------------+
+    285             +      0             +
+    715             +      0             +
+    1437            +     1087           +
+    1749            +      0             +
+--------------------+--------------------+

我认为这是来自循环,但我不知道如何解决它。有人可以帮助我吗?并提前感谢您的宝贵时间。

【问题讨论】:

  • 看起来因为它们没有相同的arrays.size() / lenght(),必须同时从两个数组中达到峰值,并且如果循环没有超出 ....
  • 它们具有相同的长度()(请参阅输出 cmets),但我的错误是我使用了两个循环。如果我错了或有误解,请纠正我。感谢您对先生的关注。

标签: java arrays swing for-loop jtable


【解决方案1】:

最后一个循环应该是

 for (int i = 0; i < intArray.length; i++) {
    modelPeaks.addRow(new Object[]{intArray[i], intArray1[i]});
 }

始终确保两个数组的长度相同。

【讨论】:

    【解决方案2】:

    如果两个数组的长度相同,则可以对两者使用相同的迭代器:

    for (int i = 0; i < intArray.length; i++) {
        modelPeaks.addRow(new Object[]{intArray[i], intArray1[i]});
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-08
      • 1970-01-01
      • 1970-01-01
      • 2019-08-21
      • 2015-01-31
      • 1970-01-01
      • 2013-05-26
      • 1970-01-01
      相关资源
      最近更新 更多