2010-01-20 33 views
0

我正在使用基於Swing的項目來顯示大量數據。我試圖從解析數據的效率和管理方面決定什麼是最好的選擇。主表可以被操縱(即可以創建或刪除完整數據的視圖),因此完整的數據需要保存在內存中。我知道這些問題可以有很多不同的解決方案。我想創建一個代表日誌中一個條目的類,其中包含代表每個「屬性」的屬性。我可以使用Comparator對象基於這些字段進行排序,並使用這些對象來構建表組件。 如果條目總數在5000-10000行左右,這可能不是一個好主意在基於Java的解析器中管理主表的最有效方法

任何有關管理這類數據並對其執行操作以呈現圖形組件的良好實踐的建議都會被接收。

提供了很多細節,所以我基本上在尋找關於如何解決問題的一般想法。

+0

據我所知,大約解析東西是風馬牛不相及的問題。你想知道如何在Swing GUI中實現一個大表。正確?如果是這樣,請編輯該問題並刪除無關的內容。 – 2010-01-20 04:23:35

+0

我刪除了解析註釋。是的,它基本上處理如何管理內存中的大量數據以在Swing表組件上呈現 – Dan 2010-01-20 19:24:12

回答

0

我假設文件全部被解析,並且在顯示錶格時,解析數據的內存表示 可用。你需要有你自己的tablemodel從分析的文件中獲取數據。

類似下面可以表格模型:

class MyTableModel extends AbstractTableModel { 
    private final List<String> columnNames; 
    private List<RowData>  rows; 

    MyTableModel() { 
     columnNames = new ArrayList<String>(); 
     columnNames.add("Name"); 
     //... 
     rows = new ArrayList<RowData>(); 
    } 

    // populate the table data model with a List 
    // that contains parsed data, each list element 
    // could correspond to a record or line (say) 
    void setCoreData(final List<RowData> data) { 
     this.rows = data; 
    } 

    public Object getValueAt(final int pRow, final int pCol) { 
     if (getColumnName(pCol).equals("Name")) { 
      return rows.get(pRow).getName(); 
     } 
     //... . 

    } 

// corresponds to the rows of table instances of which 
// are created by output of parsing 
private class RowData { 
    private String name; 

    public Object getName() { 
     return name; 
    } 
} 

// table instantitaion can be as below (say) 
JTable myTable = new JTable(new MyTableModel()); 

相關問題