2014-02-15 79 views
0

表限制的大小設置爲靜態的限制,我想改變這種狀況,以聲明的動態如何改變靜態的JTable限制動態(靜態對象數組動態)

這裏的JTable &對象。

public JTable issuetable = null; 
    static Object[][] data; 

這裏是我的JTable

public JTable getIssues() { 
    issuetable = new JTable(); 


    String[] colName = {"Member", "Book", "Issue Date", "Return Date ", 
      "Remarks" }; 
    List<Issue>issues=ServiceFactory.getIssueServiceImpl().findAllIssue(); 

issuedata的大小爲100000 ..我想改變的極限動態..

data=new Object[issues.size()][100000]; 

    for(Issue issue:issues){ 

     data[i][0]=issue.getMemberId().getName(); 
     data[i][1]=issue.getBookId().getName(); 
     data[i][2]=issue.getIssueDate(); 
     data[i][3]=issue.getReturnDate(); 
     data[i][4]=issue.getRemark(); 
     data[i][5]=issue; 
     i++; 
    } 

如果你知道答案請在這裏分享..

回答

3

在您的previous question中,您使用的是DefaultTableModel。請記住,TableModel本身就是一個數據結構。無需將數據存儲在兩個數據結構中,即您的data[][]DefaultTableModelDefaultTableModel的基本結構是Vector的動態Vector

你可以做的是這個。剛剛宣佈你DefaultTableModel有0行,使用此構造

然後就動態地添加行的結構

所以基本上,你的聲明會是這樣

String[] colName = {"Member", "Book", "Issue Date", "Return Date ", "Remarks" }; 
DefaultTableModel model = new DefaultTableModel(colName, 0); 
JTable table = new JTable(model); 

然後,只需添加行像

String member = "Stack"; 
String book = "overflow"; 
Data issueDate = date; 
.... 
Object[] row = { member, book, issueDate, returnDate, remarks }; 
DefaultTableModel model = (DefaultTableModel)table.getModel(); 
model.addRow(row); 

請閱讀DefaultTableModel api documentation看到更多的建設者和可用

方法
1

而不是全部複製從列表到DefaultTableModel的數據可以使用List作爲自定義TableModel的數據結構。然後你可以從這個TableModel中添加/刪除Issue對象。

請參閱Row Table ModelJButtonTableModel.java示例,以獲得RowTableModel如何擴展以提供此功能的簡單示例。

使用這種方法,數據只存在於一個地方,您可以直接從TableModel訪問Issue對象。