簡體   English   中英

如何在Java中將對象轉換為JTable

[英]How to convert an object into a JTable in Java

我最近開始使用OpenCSV的CSVReader將數據從CSV文件獲取到Java中的JTable,但是我一直遇到錯誤。 DaTroop在此處給出了如何從CSV獲取數據的答案: 將csv導入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);
    }

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

還要注意,調用myEntries.toArray()返回Object[] ,而不返回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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM