2011-11-18 68 views
1

我有一個JList,它必須顯示3000多個項目。我希望在列表中有100個項目「可見」,並且當您滾動並接近「可見」項目的結尾(或開始)時,下一部分(大約50)必須加載到列表中。有沒有簡單的方法來做到這一點?用JList顯示大量的數據?

回答

2

不存在這個問題並沒有簡單的方法,你必須實現分頁(S)

  • 最簡單的工作時,由數據庫引擎管理,大多數則支持paginations直接

  • 模式,但我從來沒有看到解決方法XxxListModel,使用JTable的一個科拉姆代替,也有一些分頁解決方法好JTable的

3

該列表僅渲染可見部分。所以從這個角度來看沒有任何開銷。如果你想延遲加載 - 使用自定義模型。

從這個page
您可以編寫自己的類,它擴展的AbstractListModel或AbstractTableModel上,這樣就可以在必要時提供所需的數據。以下示例顯示了AbstractTableModel的用法。

+0

僅供參考 - 請不要使用''
標籤,絕對不把它們編輯成其他人的帖子。學會使用編輯器,特別是降價。如果你真的想要一個換行符而不是一個新的段落(你幾乎從未真正需要這樣做)在行尾使用兩個空格。 – meagar

1

我有一個JList,必須顯示超過3000個項目。

呵呵。你讓這個聲音像一個大數字。這裏是一個列表(並顯示正好),超過30個項目。

Big List

import javax.swing.*; 

class BigList { 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       int bigNumber = 30001; 
       String[] bigData = new String[bigNumber]; 
       for (int ii=0; ii<bigNumber; ii++) { 
        bigData[ii] = "String " + (ii+1); 
       } 
       JList list = new JList(bigData); 
       list.setVisibleRowCount(5); 

       JOptionPane.showMessageDialog(null, new JScrollPane(list)); 
      } 
     }); 
    } 
} 
+0

是的,但你有30k個小* String *對象,而他可能有一些非常大的對象或對象圖形,所以例如,如果每個項目都有1兆字節的數據,那麼3k可能是一個很大的數字。 –