java - Arraylist 到 2D 数组,然后到 JTable

标签 java swing list jtable multidimensional-array

我正在努力将我的数组列表变成一个二维数组,然后将其添加到表格上以显示数据。

import java.awt.*;
import javax.swing.*;
import java.util.ArrayList;
import java.util.List;

public class Planettabell
{
public static void main(String[] args)
  {
    EventQueue.invokeLater(new Runnable()
    {
      public void run()
      {
        JFrame vindu = new Test();
        vindu.setVisible(true);
      }
    });
  }
}

class Test extends JFrame
{
  private String[] name = {"Name", "grade"};

  Object[][] cell = {{"nameHer", "GradeHer"}};
  Object[][] cell2 =  {{"nameHer2", "gradeHer2"}};
  Object[][] cell3 = {{"nameHer3", "gradeHer3"} };

  public Test()
  {
    setTitle("Planettabell");
    setSize(500, 210);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    List<Object[]> list = new ArrayList<Object[]>();
    list.add(cell);
    list.add(cell2);
    list.add(cell3);

    Object[][]array = list.toArray(new Object[list.size()][]);

    JTable tabell = new JTable(array, name);

    Container c = getContentPane();
    c.setLayout(new FlowLayout());
    c.add(new JScrollPane(tabell), BorderLayout.CENTER);
  }


}

如果我运行它,我会收到此消息 线程“AWT-EventQueue-0”中的异常 java.lang.ArrayIndexOutOfBoundsException:1

如果我在 JTable 上添加“cell”而不是“array”,则此代码可以正常工作,但我需要列表中的整个数组才能工作。

我也尝试过:

    int number = list.size()/2; 
Object[][] ArrayNew = new Object[number][2];
for(int x = 0; x< number; x++)
{
    for(int z = 0; z < 2; z++)
    {
        int y = 2 * x;
        ArrayNew [x][z] = list.get(y+z);
    }
}

JTable tabell = new JTable(ArrayNew, name);

而不是list.toarray。但后来我只得到 [[Ljava.lang.Object;@28864ae7 和 [[Ljava.lang.Object;@49214a13] 表中文本应该在的位置。

希望得到任何答案:)

最佳答案

您的列表实际上是一个 3D 数据结构(2D 数组列表),它应该只是 2D(数组列表):

Object[] information = {"nameHer", "GradeHer"};
List<Object[]> list = new ArrayList<Object[]>();
list.add(information); // more data here 

Object[][]array = list.toArray(new Object[list.size()][]);

在您的代码中,Object[][] cell = {{"nameHer", "GradeHer"}}; 是一个二维数组,然后将其添加到列表中(使列表 3过程中的维度)。 您的单元格不应该是二维的,它们代表您的行并且必须是一维数组。

替换为 Object[] cell = {"nameHer", "GradeHer"}; 就可以了

关于java - Arraylist 到 2D 数组,然后到 JTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16367343/

相关文章:

java - 使用java swing和eclipse从目录添加图像到标签中并显示在jpanel中

java - 比较数组中的 double 值并返回索引号

java - 方法的返回值

java - 在 JTable 中呈现组合框

list - Prolog:findall 但只保存一些解决方案

java - Java中根据输入参数的类型决定如何执行方法

java - 如何将系统性能值量化为单个性能值

java - 获取 zip 条目的实际大小

java - JTable 转到行

python - 使用转换的 pandas 分组列表聚合失败并出现关键错误