2011-10-03 7 views
1

나는 간단한 그리기 프로그램을 작성하고, 메뉴를 생성, 나는 메뉴를 보여주기 위해 내 프로그램이 소스, 따라서 http://download.oracle.com/javase/tutorial/displayCode.html?code=http://download.oracle.com/javase/tutorial/uiswing/examples/components/MenuLookDemoProject/src/components/MenuLookDemo.java은 (변수에 도달하는 방법)

를 사용, I

MenuDemo demo = new MenuDemo(); 
    frame.setJMenuBar(demo.createMenuBar()); 

내가 프로그램을 시작 메뉴가 성공적으로 작동하지만이 메뉴에서 STH를 클릭하면 다른 한편으로는, 예를 들어, 방법에 내 프로그램의 부울을 변경하려면 "의 actionPerformed"단지이 라인을 추가 변하기 쉬운. 그러나 "actionPerformed"는 "MenuLookDemo.java"에 존재하므로 변수에 연결할 수 없습니다.

해결 방법을 제안 할 수 있습니까?

감사

+0

정말 객체 지향 디자인에 대해 읽어야합니다. 이것은 OO-101 수준 질문입니다. – Romain

+2

여기서 OO-101 레벨 질문을하는 것이 좋지 않습니까? 나는 이런 종류의 물건을 묻는 것이 완벽하다고 생각했다. –

답변

1

은 아마 당신은 클래스 MenuDemo를 다시 작성하고 변수에 액세스 MenuDemo에 객체를 전달할 수 있습니다.

class MenuDemo{ 
    YourType obj; 
    MenuDemo(YourType obj){ 
    this.obj = obj; 
    } 
    // Now you can access elements of obj 
} 
+0

Pikaurd가 옳다 - MenuDemo는 프로그램에 정보를 보내는 방법을 필요로한다. (실제로는 그의 샘플에서 'obj'로 표현된다.) –

+0

이 중 하나를 시도했지만 주요 문제는 "actionPerformed"이벤트가 플래그 된 경우 일부 변수를 적용하기를 원합니다. MenuDemo에 인수를 추가했지만이 객체를 "actionPerformed"메서드로 전송할 수 없으므로 해당 변수에 도달 할 수 없습니다. – CanCeylan

+0

actionPerformed는 어디에 있습니까? 여기에 프로젝트 구조를 붙여 넣을 수 있습니까? 나는 MemoDemo에서 actionPerformed을 생각 했으므로 메뉴 요소는받은 동작을 처리 할 수 ​​있습니다. – Pikaurd

0

건물 Pikaurd 위에서 무슨 오프, 이렇게 :

public class MyType { 
    int x; 
    public void doTheNeedful() { 
    x = 5; 
    } 
} 

다음 MenuDemo 클래스 MyType의 필드 obj이 포함되어 있는지 확인합니다. 안에 obj.doTheNeedful()으로 전화하십시오.

나는 의도적으로이 코드를 제공하지 않습니다. 위의 문장은 당신이 그것을 이해하기에 충분해야합니다.

관련 문제