2009-05-13 31 views
5

Có thể lấy chỉ mục hàng đã chọn từ mô hình bảng của tôi không?nhận hàng đã chọn qua AbstractTableModel

Đối tượng của tôi đã biết về mô hình bảng. Thay vì chuyển một tham chiếu đến bảng, tôi có thể lấy chỉ mục đã chọn bằng cách sử dụng mô hình không?

Trả lời

6

TableModel chỉ liên quan đến dữ liệu, ListSelectionModel tự quan tâm đến những gì hiện đang được chọn, vì vậy, không bạn không thể lấy hàng đã chọn từ TableModel.

13

Giống như MrWiggles cho biết bạn có thể lấy nó từ ListSelectionModel mà bạn có thể truy cập từ chính bảng đó. Tuy nhiên cũng có các phương thức tiện lợi trong JTable để có được các hàng được chọn. Nếu bảng của bạn là sắp xếp được vv bạn cũng sẽ cần phải đi qua các phương pháp convertRowIndexToModel :)

Từ javadoc JTable:

int[] selection = table.getSelectedRows(); 
    for (int i = 0; i < selection.length; i++) { 
    selection[i] = table.convertRowIndexToModel(selection[i]); 
    } 
    // selection is now in terms of the underlying TableModel 
+2

Điều này làm việc và cần được trả lời đúng –

+0

Xem http://docs.oracle.com/javase/7/docs/api/javax/swing/JTable.html để biết thêm thông tin. – FacundoJ

+0

Nó hoạt động, cảm ơn! – Lipstick

0

Nếu bạn để lớp mô hình của bạn thực hiện ListSelectionModel cũng như TableModel, bạn sẽ có có thể nhận được lựa chọn từ một mô hình ... nhưng bạn không thể mở rộng hai lớp mô hình trừu tượng :-((Nó cũng không phải là một ý tưởng rất hay vì lớp học của bạn sẽ có quá nhiều trách nhiệm)

0

Bạn có thể lấy chỉ mục từ Bảng được ràng buộc và sau đó bạn có thể sử dụng nó để thao tác mô hình bảng. Ví dụ, nếu tôi muốn xóa một Hàng trong bảng của tôi mô hình:

myTableModel.removeValueAt(myTable.getSelectedRow()); 
Các vấn đề liên quan