라벨이 Swing인 게시물 표시

JAVA Swing MVC model

이미지
MVC(Model/View/Control)는 Xerox에서 개발된 사용자 인터페이스를 개발하는데 사용되는 패턴이다. A model that represents the data for the application. The view that is the visual representation of that data. A controller that takes user input on the view and translates that to changes in the model. Model은 View로 표현되어서 사용자에게 보여지고, View를 통한 사용자의 입력등은 Control등으로 들어와서 제어가능한 표현으로 바뀌여지고 Model로 영향을 주게 된다.(화살표방향) 이러한 MVC모델은 많은 사용자 인터페이스 개발에 쓰이고 있다. 스윙도 기본적으로는 MVC모델을 따르고 있지만, 스윙을 개발하면서 MVC모델을 그대로 적용하기에는 실제적인 어려움이 많아. 조금 변형한 모델을 개발하게 된다.  (모델 개발에 관련해 더 자세한 내용은 여기  참고) Model과 UI delegate(View + Control)로 나뉜다.   여기서 UI Manager는 실행중인 UI클래스를 변경가능하게 함으로써 스윙의 Plugger Look & Feel을 지원한다.  JButton의 구조도 이런 구조를 채택하고 있다. 아래 자세한 그림을 살펴보자.(상속관계 화살표가 없어서 못그림.ㅠㅠ) JComponent를 상속받은 JButton을 Model부분과 UI부분으로 나누어 표현해보았다.  버튼을 기존 방식에서 조금 다른 방식으로 바꾸어보고 싶다면, Model부분에서는 DefaultButtonModel대신 다른 클래스를 구현해서 setModel()메서드를 이용하여 바꿔달아주면 된다. UI부분에서는 BasicButtonUI부분을 다른 클래스로 구현 후 setUI()메서드를 이용해서 바꿔 달아주면 된다.  예제...