Как изменить статический предел 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++;
    }

если вы знаете ответ, пожалуйста, поделитесь здесь ..


person Prasanth A R    schedule 15.02.2014    source источник


Ответы (3)


В своем предыдущем вопросе вы использовали DefaultTableModel. Имейте в виду, что TableModel сама по себе является структурой данных. Нет необходимости хранить данные в двух структурах данных, то есть в вашей data[][] и в DefaultTableModel. Базовая структура DefaultTableModel представляет собой динамическую структуру Vector из Vectors.

Что вы можете сделать, так это. Просто объявите свой DefaultTableModel с 0 строками, используя этот конструктор

Затем просто динамически добавляйте строки в структуру с помощью

  • public void addRow(Object[] rowData) — добавляет строку в конец модели. Новая строка будет содержать нулевые значения, если не указано значение rowData. Будет сгенерировано уведомление о добавлении строки.

Итак, в основном ваше объявление будет таким

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);

Прочтите документацию API DefaultTableModel, чтобы увидеть больше конструкторов и методов. доступный

person Paul Samsotha    schedule 15.02.2014

Вместо массива используйте структуру данных с динамически изменяемым размером в своей реализации AbstractTableModel. Этот EnvDataModel является примером, который содержит Map<String, String>.

person trashgod    schedule 15.02.2014

Вместо того, чтобы копировать все данные из вашего списка в DefaultTableModel, вы можете использовать свой список в качестве структуры данных для пользовательской TableModel. Затем вы можете добавить/удалить объект Issue из этой TableModel.

Простой пример см. в примере JButtonTableModel.java из Модель таблицы строк. того, как RowTableModel можно расширить, чтобы дать вам эту функциональность.

При таком подходе данные всегда находятся только в одном месте, и вы можете получить доступ к объектам Issue непосредственно из TableModel.

person camickr    schedule 15.02.2014