2016-08-02 23 views
0

我得到了一個任務,我不確定如何解決。JTable的通用類

我必須用一個.txt文檔中的行填充一個JTable。問題在於有多個.txt文檔對於JTable具有更多或更少的行和列。

例如: 的cars.txt內:

id;hp;price;quantity 
1;100;7000;5 
4;120;20000;2 
7;300;80000;3 

的bikes.txt內部

id;price;quantity;color;year 
3;80;20;red;2010 
5;200;40;green;2011 
12;150;10;blue;2007 

所以,當一個.txt選擇一個JDialog會彈出一個JTable內,數據將顯示在哪裏。 我認爲我可以創建一個「類任何」,我有一個實例變量字符串[] [],我可以通過讀取.txt定義大小,並將數據保存在一個數組後,我可以統計多少行和它有多少列, 與cars.txt示例它將是:字符串[4] [3]

這是一個很好的方式來處理或有更好的方法來做到這一點?

感謝您的幫助:d

回答

1

你的問題是要明確做什麼有點含糊。

你想簡單地填寫表中給出的所有數據嗎?或者你只想要使用某些列?當你選擇文本文件時,你知道它們有哪些列名(你能不能硬編碼)。

一個良好的開端是...

EDITED這裏的解決方案.....

DefaultTableModel dtm = (DefaultTableModel)yourJTable.getModel(); 
    // This divides your txt file to a string array divided by rows 
    string[] RowSplit = yourTxtFileThatYouRead.split("\n"); 

//this assumes that your txt file contains the column headers 
    dtm.setColumnHeaders(RowSplit[0].split(";")); 


    //Start the iteration at 1 to skip the column headers 
    for (int i = 1; i < RowSplit.length; ++i) { 
    dtm.addRow(RowSplit[i].split(//some delimeter //)); 

dtm.fireTableDataChanged(); 

第一部分設置列標題,使爲內變化的表列大小。

第二部分按順序添加行。

編輯格式化 編輯以更好的答案

+0

首先,感謝您的努力:D – SergSam

+0

編輯:我的意思是說我得到了不同的結果。txt表格,這可能是完全不同的,所以我需要一個類來創建一個文檔的每一行的對象,所以我可以將它們映射到JTable – SergSam

1

How to Use Tables: Creating a Table Model所示,可以延長AbstractTableModel管理任意尺寸的機型。讓你的模型管理一個List<List<String>>。將每個文件的第一行解析爲List<String>,該文件可以通過您的實施getColumnCount()getColumnName()訪問。將後續行解析爲每行一個List<String>;在您的getValueAt()的實施中訪問這些行的List。管理Map<String, String>的相關示例顯示here。雖然更復雜,但您可以使用Class Literals as Runtime-Type Tokens作爲非字符串數據;返回您的getColumnClass()實施中的令牌,以獲取支持類型的默認render and editor。最後,考慮這些file based JDBC drivers for flat files之一。