2011-11-01 43 views
6

Tôi đang xây dựng một treetable sử dụng JXTreeTabble và tôi muốn tắt/có thể menu các mục tùy thuộc vào giá trị đã chọn. Vì vậy, tôi đã cố gắng để đưa mã này trong table model tôi:Lấy Giá trị đã Chọn từ JXTreeTable

public Object getValueAt(int index) { 
     if (index >= 0 && index < root.getSize()){ 
      return root.get(index); 
     } 

     return null; 

    } 

Vấn đề

Trên đây chỉ hoạt động nếu nội dung của table không được mở rộng. Bởi vì index của selected row có thể lớn hơn size của t able model (mô hình có thể có hai mục và hàng có thể có 10 mục khi mọi thứ được mở rộng). Ngoài ra, số object type của số parent khác với số children (suy nghĩ về một cuốn sách có các chương là trẻ em).

Bạn sẽ đề xuất cách nào để thực hiện điều này một cách chính xác?

Trả lời

0

Các chỉ mục có thể khác nhau về chế độ xem và mô hình. Bạn phải điều chỉnh chỉ số hàng của lựa chọn đầu tiên sử dụng convertRowIndextToModel()

6

giả index là số hàng của bạn, hãy thử những điều sau đây để có được giữ của đối tượng nút:

TreePath path = treetable.getPathForRow(index); 
Object node = path.getLastPathComponent(); 

nơi treetable sẽ là một con trỏ đến bảng bằng cách sử dụng mô hình bảng này.

+0

Đó là câu trả lời. –

1

tại JXTreeTable bạn có thể truy cập giá trị dựa trên hàng và nodeClass từ treeTable của bạn. dụ:

int row=treeTable.getSelectedRow(); 
//get value from column 
Object object= treeTable.getValueAt(row, yourColumn); 
TreePath path= treeTable.getPathForRow(row); 
Object o= path.getLastPathComponent(); 
Class<? extends Object> entity=o.getClass(); 

kết quả bạn sẽ nhận được một lớp từ đối tượng, bạn có thể phân tích các đối tượng để có được giá trị

Các vấn đề liên quan