Tôi muốn triển khai ToolTip trong Swing có hành vi tùy chỉnh: người dùng di chuyển trên thành phần càng dài, chi tiết càng được hiển thị trong chú giải công cụ (nghĩa là một vài dòng mới được thêm sau vài giây người dùng di chuột qua thành phần). Tôi chỉ cần kiểm tra xem điều này thực sự có thể thực hiện được với Swing mà không có những thứ quá lộn xộn. Ý tưởng của tôi vào lúc này có lẽ sẽ là:Mở rộng ToolTipManager của Swing để thay đổi hành vi khi di chuột?
- Mở rộng ToolTipManager
- Override mouseEntered để bắt đầu một bộ đếm thời gian (có thể sử dụng javax.swing.Timer?). Gọi setToolTipText và createToolTip để làm mới các tooltip và thêm thông tin mới đều đặn
- Override mouseExited để thiết lập lại bộ đếm thời gian
- Có lẽ sử dụng setDismissDelay để thiết lập sự chậm trễ bỏ một cái gì đó còn rất nhiều (hoặc Integer.MAX_VALUE)
Điều này có khả thi hay không hay đây không phải là cách hay để làm việc với Swing (xin lỗi, tôi khá mới với nó)? Có cách nào tốt hơn để làm điều này?
[sửa] Hmm, chỉ cần nhớ rằng ToolTipManager là một singleton với một hàm tạo chỉ có khả năng hiển thị gói, vì vậy nó không thể được mở rộng.
[chỉnh sửa 2] Tôi đang thử một vài giải pháp vào lúc này. Một điều mà tôi quên thêm là tôi cần phải biết thành phần nào đang được di chuột qua - điều tôi đoán có nghĩa là tôi sẽ cần phải làm việc với một số loại người nghe bằng phương thức mouseEntered() (hoặc có thể truy cập thông tin). Và không có tương tác nào khác với cửa sổ bật lên/chú giải công cụ là cần thiết - nó chỉ cần hiển thị thông tin.
"* Điều đó có khả thi không? *" Có. Cách của bạn trông giống như một lựa chọn tốt, nhưng không cần thực hiện cụ thể thì khó có thể nói được .. – user1803551
Đúng vậy! Nếu nó có vẻ giống như một lựa chọn phong nha tôi sẽ cho nó một đi - có lẽ là cách tốt nhất để tìm ra. –
Với một số thông tin khác, tôi có thể hướng dẫn bạn thêm một chút. Có một cái gì đó như "cho mỗi giây x thêm của lơ lửng, thêm một dòng khác vào văn bản chú giải công cụ" là một ví dụ tốt về những gì bạn muốn đạt được? – user1803551