如何在Java中将对象转换为JTable

时间:2014-07-14 17:07:04

标签: java swing csv jtable

我最近开始使用OpenCSV的CSVReader将CSV文件中的数据传输到java中的JTable,但我一直收到错误。 DaTroop给出了如何从CSV获取数据的答案:import csv to JTable。就我而言,我复制了代码

CSVReader reader = new CSVReader(new FileReader("yourfile.csv")); 
List myEntries = reader.readAll();
JTable table = new JTable(myEntries.toArray());

进入Netbeans IDE 7.4,但我一直收到错误"不兼容的类型 - 对象无法转换为TableModel"。在

(myEntries.toArray());

有什么想法吗?

由于

在评论中,请找到我的整个代码段。 JFrame工作和视图,所以它应该被称为正常。

public static void LoadLog() throws FileNotFoundException, IOException {
        LogViewer log = new LogViewer();
        log.setVisible(true);
CSVReader reader = new CSVReader(new FileReader("testog.csv")); 

String[][] rowData = {
    { "A", "B" },
    { "C", "D" }
};

List<String[]> myEntries = reader.readAll();
rowData = myEntries.toArray(new String[0][]);

String[] columnNames = { "Column 1", "Column 2" };

System.out.println(myEntries);

table1 = new JTable(rowData, columnNames);

log.pack();
log.setVisible(true);
    }

1 个答案:

答案 0 :(得分:2)

首先,请注意reader.readAll()返回List<String[]>

另请注意,调用myEntries.toArray()会返回Object[],而不是Object[][],或者更具体地来说String[][],这将更适合使用。

与您尝试做的匹配的最接近JTable的构造函数将是这个:

JTable(Object[][] rowData, Object[] columnNames) 

因此,您需要同时提供rowDatacolumnNames。您可以像这样获得rowData

List<String[]> myEntries = reader.readAll();
String[][] rowData = myEntries.toArray(new String[0][]);

创建一个变量来保存列名称(或者不要选择,但仍然需要列名称):

String[] columnNames = { "Column 1", "Column 2" };

然后创建你的JTable:

JTable table = new JTable(rowData, columnNames);

根据您的评论,这是一个简短的代码段,用于创建和显示表格。只要您使用正确的数据初始化rowDatacolumnNames,它就可以正常工作。

JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

String[][] rowData = {
    { "A", "B" },
    { "C", "D" }
};
String[] columnNames = { "Column 1", "Column 2" };
JTable table = new JTable(rowData, columnNames);
frame.add(new JScrollPane(table));

frame.pack();
frame.setVisible(true);