如何将静态jtable限制更改为动态(静态对象数组为动态)

时间:2014-02-15 12:16:48

标签: java swing dynamic static 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();

issata的大小限制为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 个答案:

答案 0 :(得分:3)

AbstractTableModel的实现中使用动态可调整大小的数据结构而不是数组。此EnvDataModel是一个包含Map<String, String>

的示例

答案 1 :(得分: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以查看更多可用的构造函数和方法

答案 2 :(得分:1)

您可以使用List作为自定义TableModel的数据结构,而不是将List中的所有数据复制到DefaultTableModel。然后,您可以从此TableModel添加/删除Issue对象。

请参阅Row Table Model中的JButtonTableModel.java示例,了解如何扩展RowTableModel以便为您提供此功能的简单示例。

使用此方法,数据只能在一个地方使用,您可以直接从TableModel访问Issue对象。