[英]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)
因此,您需要同時提供rowData
和columnNames
。 您可以這樣獲得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);
根據您的評論,這是用於創建和顯示表的簡短代碼段。 只要使用正確的數據初始化rowData
和columnNames
,它就可以正常工作。
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.