2011-05-11 3 views
6

이 튜토리얼을 사용하여 MVC 아키텍처를 사용하는 애플리케이션을 빌드하고 있습니다 : http://www.oracle.com/technetwork/articles/javase/index-142890.html. 하지만 JMenuBar의 actionListener를 빌드하고 추가하기 위해 코드를 어디에 어떻게 또는 어디에 넣어야하는지 잘 모르겠습니다.Java MVC 아키텍처에서 JMenuBar를 통합하는 방법은 무엇입니까?

또한, 케이 HORSTMANN에 의해 ​​도서 객체 지향 설계 & 패턴은 "컨트롤러는 윈도우 시스템에서 마우스와 키보드 이벤트를 처리 할 수 ​​를, 또는 같은 버튼과 메뉴와 같은 사용자 인터페이스 요소를 포함 할 수있다.을"말을해야 내가 이 조언을 따르십시오. 그렇다면 어떻게 구현해야합니까? Main 클래스에있는 JFrame에이를 추가하는 방법은 무엇입니까?

+0

대답은 아니지만 오히려 MVC가 아닌 PM 기반 아키텍처를 살펴 보는 것이 좋습니다. Karsten Lentzsch는 그것에 대해 아주 좋은 프레젠테이션을하고 있습니다. (미안하지만 지금은 링크가 아닙니다) 또한 구현을 돕기 위해 오픈 소스 JGoodies 바인딩 라이브러리도 있습니다. – jfpoilpret

+0

Tank you @jfpoilpret, 나는이 아키텍처를 몰랐다. 나는 그것을 살펴볼 것이다. – JPB

답변

3

How to Use Actions에서 제안한대로 Action은이를 캡슐화하는 편리한 방법입니다. 또한 Action "을 사용하여 기능 및 상태를 구성 요소에서 분리 할 수 ​​있습니다.

부록은 : example이 매우 간단에서 모델은 파일 시스템의 디렉토리를 나타내는 File, 그리고보기는 actionPerformed()에 대한 수신 대기 JLabel이다. Action으로 캡슐화하면 각 메뉴 항목과 도구 모음 버튼이 동일한 결과를 생성합니다. 접근법은 Swing의 separable model architecture을 상징합니다.

+0

+1 for java.swing.Action – mKorbel

+0

@mKorbel : 고마워! 편의성은 매력적이지만 여전히 아키텍처 측면을 다루어야합니다. – trashgod

0

나는 항상 다음과 같은 방식으로 MenuBars를 만들었습니다.

class MyMenuBar extends JMenuBar { 
    add(new FileItem()) 
} 

class FileItem extends MenuItem { 
    addMenuItem(new ExitAction()) 
} 

class ExitAction extends AbstractAction { 
    //define the action, tooltip and name of here 
} 

는 메인 프레임에서 당신은 그냥 JFrame의 MyFrame을에 도구 모음을 추가;

myFrame.setMenuBar(new MyMenuBar()) 

일부 구문이 잘못되었으므로 잠시 동안 메뉴 모음을 작성하지 않았을 수 있습니다. 다시 사용할 수 있도록 작업을 반환하는 팩토리 클래스를 사용하거나 동일한 DI 프레임 워크를 사용하여 동일한 작업을 수행 할 수 있습니다.

관련 문제