2009-10-04 37 views

Trả lời

9

Sử dụng phương pháp moveRow(...) của DefaultTableModel.

Hoặc, nếu bạn không sử dụng DefaultTableModel thì hãy triển khai phương thức mô phỏng trong mô hình tùy chỉnh của bạn.

+0

cảm ơn. bạn có thể cung cấp đoạn mã, plz không? – Attilah

+0

Tôi không nhận thấy có một liên kết. nó rất hữu ích. cảm ơn. – Attilah

+0

liên kết này đã lỗi thời –

0
TableModel model = jTable.getModel(); 
for(int col=0; col<model.getColumnCount(); col++) { 
    Object o1 = model.getValueAt(row1, col); 
    Object o2 = model.getValueAt(row2, col); 
    model.setValueAt(o1, row2, col); 
    model.setValueAt(o2, row1, col); 
} 
2

Đây là mã của tôi mà tôi vừa phát triển bằng câu trả lời trong câu hỏi này. Với những chức năng này, bạn có thể chọn nhiều hàng cùng một lúc và di chuyển chúng xuống hoặc lên trong một JTable. Tôi đã đính kèm các chức năng đó vào JButton, nhưng tôi xóa chúng ra để làm cho chúng dễ đọc hơn.

Dòng mã cuối cùng của cả hai phương pháp (setRowSelectionInterval()) được sử dụng để thực hiện theo lựa chọn trên hàng đang được di chuyển, vì moveRow() không di chuyển vùng chọn mà là nội dung của hàng.

public void moveUpwards() 
{ 
    moveRowBy(-1); 
} 

public void moveDownwards() 
{ 
    moveRowBy(1); 
} 

private void moveRowBy(int by) 
{ 
    DefaultTableModel model = (DefaultTableModel) table.getModel(); 
    int[] rows = table.getSelectedRows(); 
    int destination = rows[0] + by; 
    int rowCount = model.getRowCount(); 

    if (destination < 0 || destination >= rowCount) 
    { 
     return; 
    } 

    model.moveRow(rows[0], rows[rows.length - 1], destination); 
    table.setRowSelectionInterval(rows[0] + by, rows[rows.length - 1] + by); 
} 
Các vấn đề liên quan