Mẫu thiết kế để quản lý cửa sổ trong ứng dụng Java Swing


9

Tôi mới bắt đầu tạo ứng dụng Java Swing nhỏ đầu tiên của mình. Khi chương trình mở ra, nó sẽ hiển thị một cửa sổ đơn, đơn giản với nhãn và một vài nút. Nhấp vào một trong những nút đó được cho là để xóa sạch màn hình chào mừng và thay thế nó bằng một bảng điều khiển hoàn toàn khác.

Tôi không chắc cách tốt nhất để tạo ra chức năng đó là gì. Một phương pháp sẽ là chuyển JFrameđối số của tôi thành ... đối với mọi thành phần khác, nhưng điều đó khiến tôi cảm thấy khó chịu. Hoặc, có làm cho mỗi bảng điều khiển tăng gấp đôi như một người nghe hành động, nhưng điều đó dường như cũng không đúng.

Có một mẫu thiết kế tôi nên áp dụng ở đây? "Thay thế nội dung của cửa sổ chính - và duy nhất" phải là một hoạt động phổ biến hợp lý. Một tên cho mẫu sẽ là đủ; Tôi có thể tự mình sử dụng Google từ đó. (Tuy nhiên, tôi sẽ không nói không với một lời giải thích dài hơn.)


Đây là một câu hỏi về các kỹ thuật lập trình thực tế, bạn có thể sẽ nhận được nhiều câu trả lời hơn về Stack Overflow.
Alex Feinman

Câu trả lời:


6

Khi xây dựng các ứng dụng Swing, tôi thường dựa trên Mẫu Người hòa giải. Trong mẫu này, một lớp Người hòa giải (thường là JFrame chính) xử lý các phần GUI khác nhau (thường là JPanels, JMenus ...) và đảm nhiệm việc liên lạc giữa chúng.

Ví dụ: nếu một sự kiện xảy ra trong JPanel1, JPanel1 sẽ thông báo cho hòa giải viên (JFrame). JFrame sau đó thực hiện hành động bằng cách sửa đổi JPanel2.

FYI: tất cả các dự án của tôi là các ứng dụng GUI từ nhỏ đến trung bình, vì vậy tôi không chắc mô hình này có tỷ lệ tốt. Nhưng nếu bạn có thể thiết kế một kiến ​​trúc phù hợp, mẫu Người hòa giải có thể là một cơ sở vững chắc.


4

Bạn có thể có phương thức chính hiển thị một JDialog. Khi hộp thoại được đóng, JFrame chính được tạo và hiển thị.

JDialog cung cấp cho bạn các phương thức tĩnh dễ sử dụng hiển thị hộp thoại với nội dung và nút tùy chỉnh và trả về mã của nút được nhấp. Bằng cách kiểm tra giá trị này, phương thức chính của bạn có thể quyết định hiển thị khung chính hoặc thoát (hoặc bất cứ thứ gì khác). Vui lòng đọc Javadoc.

Không giống như một số khung UI cũ hơn, ứng dụng Swing không được gắn với một khung hoặc cửa sổ cụ thể. Bạn có thể tạo nhiều cửa sổ như bạn muốn. Ứng dụng kết thúc khi tất cả các luồng kết thúc, không phải khi tất cả các cửa sổ đã được xử lý. Điều này thường đạt được với System.exit (0).

Tôi không biết nếu có một mẫu thiết kế cụ thể cho trường hợp đó. Tôi khuyên bạn nên hướng dẫn Java Swing.


1
-1. Đây là một câu hỏi mẫu thiết kế. Đề xuất thay đổi thông số kỹ thuật tôi đã đưa ra và kết thúc bằng "Tôi không biết nếu có một mẫu thiết kế cụ thể" không trả lời nó.
Pops

2
Câu trả lời của anh ấy rất chính xác. Bạn không gặp vấn đề về mẫu thiết kế, bạn cần tìm hiểu cách thức biểu mẫu và hộp thoại hoạt động trước.
Alex

2

Nhiều khung UI có các quy tắc khác nhau liên quan đến cửa sổ 'chính' hoặc 'hoạt động'. Một cách để quản lý sự phức tạp đó là có cửa sổ chính của bạn, điều khiển vòng lặp thông báo chính, là một cửa sổ vô hình (hoặc một pixel nhỏ, không có sắc ký, tắt màn hình cho các khung đặc biệt khó chịu). sau đó có tất cả các cửa sổ và hộp thoại khác là con của cửa sổ đó.

Phương pháp này có nhiều ưu điểm, đặc biệt là khi xử lý các sự kiện keyclicks và chuột toàn cầu, cũng như trong việc ghi nhật ký và xử lý ngoại lệ cấp cao nhất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.