Bagaimana mengubah batas jtable statis menjadi dinamis (array objek statis menjadi dinamis)

ukuran batas tabel ditetapkan sebagai batas statis dan saya ingin mengubahnya menjadi dinamis

di sini jtable & objek dideklarasikan.

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

inilah jtable saya

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


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

ukuran data terbitan dibatasi hingga 100.000 .. saya ingin mengubah batas menjadi dinamis..

    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++;
    }

jika anda tahu jawabannya silahkan share disini..


person Prasanth A R    schedule 15.02.2014    source sumber


Jawaban (3)


Dalam pertanyaan sebelumnya, Anda menggunakan DefaultTableModel. Perlu diingat, TableModel adalah struktur data itu sendiri. Tidak perlu menyimpan data dalam dua struktur data, yaitu data[][] dan DefaultTableModel Anda. Struktur yang mendasari DefaultTableModel adalah Vector dinamis dari Vectors.

Yang dapat Anda lakukan adalah ini. Cukup nyatakan DefaultTableModel Anda dengan 0 baris, menggunakan konstruktor ini

Kemudian tambahkan saja baris secara dinamis ke struktur dengan

  • public void addRow(Object[] rowData) - Menambahkan baris ke akhir model. Baris baru akan berisi nilai null kecuali rowData ditentukan. Pemberitahuan tentang baris yang ditambahkan akan dibuat.

Jadi pada dasarnya deklarasi Anda akan seperti ini

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

Kemudian tambahkan saja baris seperti

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

Silakan baca dokumentasi api DefaultTableModel untuk melihat lebih banyak konstruktor dan metode tersedia

person Paul Samsotha    schedule 15.02.2014

Daripada menggunakan array, gunakan struktur data yang dapat diubah ukurannya secara dinamis dalam penerapan AbstractTableModel. EnvDataModel ini adalah contoh yang berisi Map<String, String>.

person trashgod    schedule 15.02.2014

Daripada menyalin semua data dari Daftar Anda ke DefaultTableModel, Anda bisa menggunakan Daftar Anda sebagai struktur data untuk TableModel khusus. Kemudian Anda dapat menambah/menghapus objek Issue dari TableModel ini.

Lihat contoh JButtonTableModel.java dari Model Tabel Baris untuk contoh sederhana tentang bagaimana RowTableModel dapat diperluas untuk memberi Anda fungsi ini.

Dengan menggunakan pendekatan ini, data hanya ada di satu tempat dan Anda dapat mengakses objek Issue langsung dari TableModel.

person camickr    schedule 15.02.2014