JTable 报错数组越界。请问要怎么解决?

img


import javax.swing.*;
import javax.swing.table.AbstractTableModel;
import java.util.Vector;

public class JTableDemo1 {
  private final JFrame jFrame = new JFrame("简单表格 ");

  Object[] title = {"姓名", "年龄", "性别"};
  Object[][] data = {
          {"李清照", 29, "男"}, {"苏格拉底", 56, "男"}, {"李白", 35, "男"}, {"弄玉", 18, "女"}, {"虎头", 2, "男"}
  };

  Vector titleV = new Vector();
  Vector<Vector> dataV = new Vector<Vector>();

  public void init() {
    for (int i = 0; i < title.length; i++) {
      titleV.add(title[i]);
    }

    for (int i = 0; i < data.length; i++) {
      Vector temp = new Vector<>();
      for (int j = 0; j < data[i].length; j++) {
        temp.add(data[i][j]);
      }

      dataV.add(temp);
    }
    System.out.println();

    JTable jTable = new JTable(new MyTable());

    jFrame.add(new JScrollPane(jTable));

    jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jFrame.pack();
    jFrame.setVisible(true);
  }

  private class MyTable extends AbstractTableModel {

    @Override
    public int getRowCount() {
      return titleV.size();
    }

    @Override
    public int getColumnCount() {
      return dataV.size();
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
      return dataV.get(rowIndex).get(columnIndex);
    }

    @Override
    public String getColumnName(int column) {
      return (String) titleV.get(column);
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
      return true;
    }
  }

  public static void main(String[] args) {
    new JTableDemo1().init();
  }
}

这都提醒具体哪行的问题了,数组越界就是超过了数组本身的长度。

img