Có cách nào để thay đổi hình nền mặc định của tất cả các phiên bản của thành phần xoay (ví dụ JPanel) để vẽ bằng nền gradient không? Hoặc tôi sẽ cần phải tạo ra một phần mở rộng của JPanel sơn với một gradient và sau đó sử dụng mà thay vì JPanel ở khắp mọi nơi trong ứng dụng của tôi?Nền gradient mặc định thành phần Swing
Trả lời
IMHO, sẽ dễ dàng hơn khi chỉ phân lớp thành phần Swing và ghi đè phương pháp paintComponent
của chúng tôi để vẽ tô màu. Và sau đó, như bạn đã nói, hãy sử dụng thành phần tùy chỉnh này trong toàn bộ ứng dụng.
Có thể khó sử dụng thuộc tính giao diện người dùng vì chúng có thể không nhất quán trên tất cả các LaF.
đó là suy nghĩ ban đầu của tôi. đã không chắc chắn nếu có một cách dễ dàng hơn để làm điều đó. đặc biệt là nếu tôi muốn áp dụng gradient cho nhiều loại thành phần, tôi sẽ cần phải phân lớp tất cả các thành phần. –
@JeffStorey, Trong trường hợp đó, có thể tốt hơn là phân lớp 'JComponent'. – Moonbeam
Tôi không chắc chắn làm thế nào mà sẽ giúp cho nhiều loại thành phần. Hãy nói rằng tôi đã thay đổi nền của một nút, làm thế nào để phân lớp JComponent giúp đỡ ở đây? –
Nó không hoàn toàn rõ ràng phạm vi bạn dự định. Ý của bạn là lớp (vì vậy tất cả các phiên bản JPanel đều tuân theo sơ đồ vẽ mới), hoặc bạn có nghĩa là tất cả các thành phần trong Vùng chứa (ví dụ: mọi thứ trong Khung)? Có thể có khả năng để làm điều này tùy thuộc vào lớp thành phần, nơi bạn có thể móc vào là Look and Feel, và trên cơ sở instance thành phần, hoặc phương thức paintComponent(), hoặc nếu bạn cần thay thế cái nhìn tiêu chuẩn của một thành phần hiện có mà bạn không thể ghi đè lên phương thức vì bạn không có quyền kiểm soát nó, bằng cách cung cấp lớp UI của riêng bạn (xem Component.setUI) sau khi thành phần đã được tạo ra.
Ngoại trừ cách tiếp cận paintComponent ghi đè không đơn giản để triển khai. Đối với hầu hết các ứng dụng, cách tiếp cận đơn giản là tốt nhất :)
- 1. Nhận màu nền mặc định của thành phần xoay
- 2. Nền gradient cố định với css
- 3. Cách thay đổi kích thước phông chữ mặc định của các thành phần Java swing
- 4. Cách định vị nền gradient hướng tâm
- 5. Màu nền mặc định của phần tử gốc SVG
- 6. Nền gradient CSS3
- 7. Google Chrome nền gradient
- 8. Java Swing Matte viền với Linear Gradient?
- 9. màu nền gradient và hình nền DRYly
- 10. Cách tạo thành phần Swing tùy chỉnh
- 11. Cách đặt lại màu nền của nút thành mặc định?
- 12. Hình nền java swing
- 13. Nhận một thành phần Swing theo tên
- 14. Tên của các hành động mặc định trong ActionMap của thành phần Swing có được chuẩn hóa không?
- 15. gradient nền với màu đồng nhất
- 16. CSS Gradient Opacity (không phải nền)
- 17. Màu nền thông báo mặc định
- 18. Tùy chỉnh (gradient) nền của ActionBar Compat
- 19. Thiết kế widget Android - nền đen mặc định
- 20. gradient nền trong IE7 với CSS
- 21. Làm thế nào để thiết lập một nền UITableViewCell gradient?
- 22. Thành phần trình duyệt tệp cho Java swing
- 23. Các thành phần Swing và tuần tự hóa
- 24. Swing: Tạo thành phần có thể kéo được ...?
- 25. Thuộc tính tên của các thành phần swing là gì?
- 26. Tô điểm trên đầu các thành phần trong Swing?
- 27. java swing tự động thêm các thành phần
- 28. Có SQL cú pháp nhận thức Swing thành phần?
- 29. Detect nếu Java thành phần Swing đã được ẩn
- 30. Trong phong cách XAML, làm thế nào để thay đổi nền rắn thành gradient?
Bạn không chỉ cần làm điều này cho nền JPanel, và sau đó làm cho tất cả các JPanels khác không bị mờ? –
@HovercraftFullOfEels, đó cũng là một lựa chọn khác. Nếu tôi muốn mở rộng nó cho các thành phần khác mặc dù, tôi nghĩ rằng tôi vẫn sẽ cần phải mở rộng những thành phần. –
@JeffStorey: có lẽ, nhưng không nhất thiết. Bạn có thể tạo JPanels của mình thông qua một số phương thức factory đơn giản để đặt opaque thành false, hoặc bạn có thể recurse thông qua cài đặt GUI tất cả các JPanels không phải là non-opaque. –