Tôi đang sử dụng phiên bản được sửa đổi một chút của ví dụ về Mặt trời JTreeTable
được hỗ trợ bởi mô hình của riêng tôi. Đó sẽ là ví dụ thứ ba (đánh dấu một ở số http://java.sun.com/products/jfc/tsc/articles/bookmarks/).JTreeTable DnD con trỏ thả nhấp nháy điên
Mọi thứ hoạt động như mong đợi ngoại trừ hỗ trợ kéo và thả. Tôi muốn DnD đó là giống như những gì một cung cấp JTree
. Kể từ JTreeTable
là một mở rộng JTable
nó cung cấp các lớp học JTable.DropLocation
để xác định vị trí thả mà không cung cấp đủ thông tin khi thả công cụ vào cột kết xuất cây của JTreeTable
(không có đường dẫn và không có chỉ mục con). Tôi đã giải quyết điều đó bằng cách tạo một lớp tùy chỉnh DropLocation
dựa trên sự kết hợp của các phiên bản JTable
và JTree
của nó. Tôi cũng đã sửa đổi phương pháp vẽ của lớp TreeTableCellRenderer
được cung cấp bởi việc triển khai JTreeTable
được đề cập để hiển thị thông tin mới này cho người dùng (hiện tại cô ấy có thể xem liệu nút mới sẽ được đặt bên trong hay trước nút đã chọn) nếu bên trong cột cây, như bạn mong đợi từ một JTree
).
Có một vấn đề. Con trỏ chuột sẽ phát điên khi vị trí thả đang được hiển thị bên trong cột cây. Nó xuất hiện và sau đó biến mất một vài phần nghìn giây sau đó hoặc điều này xảy ra quá nhanh đến mức con trỏ kéo thậm chí không được hiển thị. Điều này xảy ra với ví dụ của Sun chưa sửa đổi. Tôi hoàn toàn trong bóng tối là tại sao điều này đang xảy ra. Đã tìm thấy một người khác có cùng sự cố tại số http://www.java.net/node/663106, nhưng giải pháp được cung cấp ở đó dường như đã đặt vị trí thả của thành phần thành không và không thể truy xuất được bằng phương thức JTreeTable.getDropLocation()
nữa. Tôi cần điều này để chuyển đổi nó thành DropLocation
sửa đổi của tôi và sau đó vẽ các công cụ dựa trên nó. Tôi rất gần với một giải pháp thích hợp cho trường hợp sử dụng của tôi mà tôi có thể nếm thử. Điều này con trỏ nhấp nháy là trở ngại duy nhất theo cách của tôi. Ý tưởng nào?
Sử dụng Java 1.6.
PS: Tôi đã quyết định tùy chỉnh JTreeTable
và không cho một trong các thành phần hiện tại (như Netbeans Outline hoặc JXTreeTable
) bởi vì tất cả đều có vấn đề về JTable.DropLocation
và không hỗ trợ giảm trước hoặc sau nút cây đã chọn (chỉ bên trong). Nếu bạn biết về một thành phần cung cấp chức năng như vậy, tôi rất vui khi được nghe về nó.
Trong bài Scriptum của câu hỏi này tôi vô cớ và cáo buộc 'org.netbeans.swing.Outline' và' JXTreeTable' không có khả năng để hỗ trợ giảm trước hoặc sau khi nút cây được lựa chọn . Điều này không đúng vì các thành phần này thực sự hỗ trợ nó. Cả hai đều gián tiếp phân lớp một JTable. Mặc dù 'JTable.DropLocation' không cung cấp thông tin đường dẫn, nhưng bạn luôn có thể lấy thông tin này thông qua hàng và cột của bảng được cung cấp bởi nó. Tôi đã biết điều này, tôi sẽ không bao giờ bận tâm lăn thành phần của riêng tôi. Tôi khuyên chống lại nó. – predi