6

Gần đây tôi đã gặp phải một vấn đề khi cố gắng triển khai Model-View-Controller trong Swing.Làm thế nào để tránh việc ghép nối View và Controller trong Swing

Tôi có lớp GUI bao gồm các bảng phụ và các bảng phụ đó bao gồm các bảng phụ khác. Bây giờ trong một trong các bảng phụ phụ có một JButton. Trong ActionListener cho JButton này, tôi muốn gọi một phương thức trong controller. Để làm điều này, tôi sẽ cần phải vượt qua bộ điều khiển sâu vào ruột của GUI đến bảng con phụ nơi JButton cư trú. Sau đó, trong bảng điều khiển phụ này, tôi sẽ cần phải đính kèm một ActionListener vào JButton và điền vào actionPerformed() bằng cách gọi phương thức mà tôi muốn gọi trong bộ điều khiển.

Tôi chắc chắn tất cả các bạn đều gặp sự cố. Có cách nào tốt để tránh đi qua bộ điều khiển sâu vào ruột của GUI.

Suy nghĩ duy nhất của tôi là làm cho người điều khiển trở thành một người độc thân tách rời khỏi tầm nhìn, nhưng tôi đã nghe nói rằng singleton thường là ác.

Bất kỳ lời khuyên nào về vấn đề này sẽ được đánh giá cao nhất. Cảm ơn trước!

Trả lời

4

Thay vì đi qua trong một tham chiếu đến bộ điều khiển, chúng ta hãy điều khiển nghe để xem, theo đề nghị của các hiệp hội gián tiếp hình here. Thêm PropertyChangeListener, được minh họa here, lý tưởng cho việc này. Khi khung nhìn cần gọi trên bộ điều khiển, nó chỉ đơn giản gọi là firePropertyChange().

Cách tiếp cận phù hợp hơn là cung cấp cho bộ điều khiển chế độ xem riêng biệt cho các hoạt động nhất định như phương pháp reset() được hiển thị here.

Các vấn đề liên quan