通过setDataVector函数更新JTable数据

时间:2013-12-13 08:57:22

标签: java swing list vector jtable

我正在尝试通过读取csv文件并调用setDataVector来更新我的JTable,但是在List of String [] s(在CSV文件中读取的结果)和Vector之间进行转换时遇到了一些麻烦对象(setDataVector方法所需)。我的尝试如下:

 jbtLoad.addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent e) {
                 try {  
                     CSVReader reader = new CSVReader(new FileReader("csv.csv")); 
                     List myEntries = reader.readAll();//List is filled with String[]'s

                     Vector<Object> data = new Vector(myEntries);
                     data.remove(0);

                     Vector<Object> column_names = new Vector();
                     column_names.add(myEntries.get(0));

                     tableModel.setDataVector(data, column_names); //the error occurs here
                 }
                 catch (Exception ex) {
                 ex.printStackTrace();
                 }
             }
        });

setDataVector应该接受以下参数:(Vector dataVector,Vector columnIdentifiers)。

问题是我一直收到错误:[Ljava.lang.String;无法强制转换为java.util.Vector。是否有一些简单的功能可以修复这个程序?或者我需要自己构建一些东西吗?

我知道矢量是折旧的,但鉴于我的程序范围有限(只是一个小作业),我认为使用它们会更容易。

感谢您的建议!

1 个答案:

答案 0 :(得分:1)

  • 数据应该是二维数组Vector<Vector<Object>> data而不是Vector<Object> data

  • 在这种情况下,您必须在util List myEntries内循环并创建新的Vector<Object> row

  • 根据AbstractTableModel

  • 使用util.List覆盖数组
  • 阅读Oracle tutorial How to use Table,SSCCE表格中的一些优秀代码示例在这里