6

최근 스윙에서 모델 - 뷰 - 컨트롤러를 구현하는 데 문제가 발생했습니다.스윙에서 뷰와 컨트롤러를 연결하는 것을 피하는 방법

하위 패널로 구성된 GUI 클래스가 있으며 그 하위 패널은 다른 하위 패널로 구성됩니다. 이제 이러한 하위 하위 패널 중 하나에 JButton이 있습니다. 이 JButton의 ActionListener에서 컨트롤러의 메소드를 호출하려고합니다. 이렇게하려면 GUI의 내부로 컨트롤러를 JButton이 상주하는 하위 패널로 깊숙히 전달해야합니다. 그런 다음이 하위 패널에서 ActionListener를 JButton에 연결하고 컨트롤러에서 호출하고 싶은 메서드를 호출하여 actionPerformed()를 작성해야합니다.

나는 모두 문제가 발생했음을 확신합니다. 컨트롤러를 GUI의 내부로 깊숙이 빠져 나가는 것을 피할 수있는 좋은 방법이 있습니까?

내 유일한 생각은 컨트롤러를보기에서 분리하는 싱글 톤을 만드는 것이지만, 싱글 톤은 일반적으로 악의적이라고 들었습니다.

이 문제에 대한 조언은 언제나 감사 할 것입니다. 미리 감사드립니다! 대신에 제어기에 대한 참조를 전달

답변

4

, here 그려진 간접 연결 의해 제안 제어기 는보기에를 들어 보자. PropertyChangeListener을 추가하면 here으로 표시되며 이상적입니다. 뷰가 컨트롤러를 호출해야 할 때, 단순히 firePropertyChange()을 호출합니다.

더 편리한 방법은 컨트롤러에 reset() 방법 (here)과 같은 특정 작업에 대한 별도의보기를 제공하는 것입니다.

관련 문제