Tôi đã dành thời gian đọc và thử nghiệm ở đây, và đưa ra một vài cách tiếp cận, nhưng không có bất kỳ cách nào để làm việc hoàn toàn, vì vậy tôi muốn biết những người lập trình Swing có kinh nghiệm hơn sẽ làm gì.Làm cách nào để phủ, thay đổi kích thước và căn giữa một thành phần trên JPanel?
Cửa sổ chính của ứng dụng của tôi chứa một loại phụ tùy chỉnh của JPanel, được sử dụng để hiển thị hình ảnh được tính từ một hàm toán học. Điều này có thể mất một thời gian để tính toán, vì vậy trong khi điều này xảy ra, tôi hiển thị một tin nhắn văn bản và một thanh tiến trình chồng lên ở giữa của bảng điều khiển. Tôi muốn cả hai văn bản và thanh tiến trình để thay đổi kích thước một cách thích hợp khi bảng điều khiển được thay đổi kích cỡ, có thể sử dụng một phần không đổi của chiều rộng của bảng điều khiển.
Hiện tại tôi có một loại phụ JPanel khác chứa văn bản và thanh tiến trình và tôi thêm "bảng tiến trình" này vào bảng điều khiển chính và đặt nó thành hiển thị khi được yêu cầu. Bảng điều khiển chính không chứa bất kỳ thành phần nào khác, nhưng có phương thức paintComponent() của riêng nó để hiển thị BufferedImage thu được từ một lớp khác. Có một số vấn đề với điều này vì nó là viết tắt:
- Bảng tiến trình không phải lúc nào cũng hiển thị khi cần, có lẽ vì không có mã nào được bảo đảm rõ ràng ở phía trước hình ảnh.
- Bảng tiến trình luôn chiếm toàn bộ chiều rộng của bảng điều khiển ứng dụng. Nó được căn giữa theo chiều dọc bằng cách sử dụng hộp thoại BoxLayout trong bảng chính với một số keo thẳng đứng trước và sau bảng tiến độ, nhưng tôi đã không có được cùng một thủ thuật để làm việc theo chiều ngang, và trong bất kỳ trường hợp nào không nhất thiết phải. Một cách tiếp cận gần như hoạt động là sử dụng BorderLayout với thanh ngang và dọc xung quanh bảng tiến độ, nhưng kích thước của bảng điều khiển tiến trình vẫn không đúng, và thanh chống cần được thay đổi khi bảng điều khiển chính được thay đổi kích thước.
Vậy bạn sẽ làm gì?
- Sử dụng trình quản lý bố cục khác trong bảng điều khiển chính?
- Sử dụng LayeredPane hoặc OverlayLayout bằng cách nào đó?
- Thêm một lớp nữa vào hệ thống phân cấp chứa bảng điều khiển hình ảnh và bảng tiến trình?
- Một số kết hợp ở trên hoặc thứ gì đó khác?
Điều gì về việc thay đổi kích thước văn bản. Tôi có cần phải tạo rõ ràng một Phông chữ mới khi bảng điều khiển được thay đổi kích thước hoặc có cách nào để thực hiện điều này tự động hơn không? -
câu hỏi hay 1 – mKorbel
IMHO nó không phải là điển hình để mở rộng kích thước phông chữ như các điều khiển trong một cửa sổ được thay đổi kích cỡ. Không nói nó nhất thiết phải là một ý tưởng tồi, nhưng điều này chắc chắn không được nướng vào Swing. Tuy nhiên, do tính đa dạng của các kích thước hiển thị, tôi đánh giá cao các giao diện người dùng cho phép kích thước văn bản được thay đổi một trình duyệt hiện đại. Vì vậy, nó có lẽ là một tính năng riêng biệt mà bạn có thể làm việc sau phần này: CTRL +/- để thay đổi kích thước phông chữ. –