วิธีเปลี่ยนขีด จำกัด 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();

ขนาดของข้อมูลปัญหาถูกจำกัดไว้ที่ 100,000 .. ฉันต้องการเปลี่ยนขีดจำกัดเป็นไดนามิก..

    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 เป็นโครงสร้างข้อมูลในตัวเอง ไม่จำเป็นต้อง at จัดเก็บข้อมูลไว้ในโครงสร้างข้อมูลสองโครงสร้าง นั่นคือ 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);

โปรดอ่านเอกสารประกอบ DefaultTableModel api เพื่อดูตัวสร้างและวิธีการเพิ่มเติม มีอยู่

person Paul Samsotha    schedule 15.02.2014

แทนที่จะใช้อาร์เรย์ ให้ใช้โครงสร้างข้อมูลที่ปรับขนาดได้แบบไดนามิกในการใช้งาน AbstractTableModel. EnvDataModel นี้เป็นตัวอย่างที่มี Map<String, String>

person trashgod    schedule 15.02.2014

แทนที่จะคัดลอกข้อมูลทั้งหมดจากรายการของคุณไปยัง DefaultTableModel คุณสามารถใช้รายการของคุณเป็นโครงสร้างข้อมูลสำหรับ TableModel แบบกำหนดเองได้ จากนั้นคุณสามารถเพิ่ม/ลบออบเจ็กต์ Issue ออกจาก TableModel นี้

ดู JButtonTableModel.java ตัวอย่างจาก Row Table Model เพื่อดูตัวอย่างง่ายๆ ของวิธีการขยาย RowTableModel เพื่อให้มีฟังก์ชันการทำงานนี้แก่คุณ

เมื่อใช้วิธีการนี้ ข้อมูลจะอยู่ในที่เดียวเท่านั้น และคุณสามารถเข้าถึงออบเจ็กต์ Issue ได้โดยตรงจาก TableModel

person camickr    schedule 15.02.2014