2014-02-22 2 views
-1

작은 피자 주문 앱을 개발하려고합니다. 나는 지금까지 3 개의 클래스를 가지고 있으며, 현재 그들 목적은 액세스 가능한 메뉴 아이템으로 3 개의 메뉴를 디스플레이하는 것입니다.자바 : 여러 클래스 파일에서 예외 오류 받기

이전에는 하나의 클래스 만 있었지만 제대로 작동했지만 여러 클래스를 사용하도록 프로그램을 분할하면 문제가 발생하기 시작했습니다.

Main.java : http://pastebin.com/bZJ7Pgdt

MakeFileMenu.java : http://pastebin.com/wv2Smm6E

MakeFrame.java : http://pastebin.com/J7DV294P

내가 점점 오전 오류는 다음과 같습니다 또한

Exception in thread "main" java.lang.NullPointerException 
at main.MakeFileMenu.MakeMenu(MakeFileMenu.java:24) 
at main.Main.start(Main.java:26) 
at main.Main.main(Main.java:16) 

에서 Makeframe.java 파일 라인 37, 42, 49 및 57은 주석 처리를 해제해야합니다. 나는 그들이 최소한 내가 메뉴를 나타나게하려고 노력할 것이다라고 생각했을 정도로 그들이 나에게 오류를주고 있었던 것에 따라 그들을 설명했다.

평범한 사람이 본 것이 있습니까? 나는 그 코드가 잘못되었을 수 있다는 것을 알아낼 수없는 코드를 두 번 확인했다.

도움 주셔서 감사합니다.

+0

예외는 MakeFileMenu의 Line 24에서 MakeMenu() 메서드가 Main.start()에 의해 호출되었을 때 문제가 발생했다는 것을 알려줍니다. 해당 행을 검사하고 어떤 변수가 null 일 수 있는지 판별하십시오. 디버거에서 실행하거나 인쇄물을 추가하여 추측을 확인하십시오. 고쳐. – keshlam

+0

[Null Pointer Exception이란 무엇입니까?] (http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception) –

+0

클래스 전략은 무엇입니까? 객체 방법론을 기반으로 클래스를 만드는 대신 각 클래스에서 수행 할 수있는 "함수"를 기반으로 클래스를 분할하는 것처럼 보입니다. 선택 사항 인 menubar, menubar에 요소를 추가하는 기능, menubar 요소에 항목을 추가하는 메커니즘 및 (클래스, 표시 등) 특성을 가진 프레임을 만드는 메서드를 제공하는 GeneralFrame 클래스를 고려할 수 있습니다. – ErstwhileIII

답변

1

문제는 일치한다 : 변수 frame (frame.frame) frame로 초기화되지 않기 때문에

frame.frame.setJMenuBar(menuBar); 

이다. 사용하기 전에 초기화해야합니다.

MakeFileMenu의 프레임에서 makeFrame을 호출하는 것을 잊었거나 makeFrame을 MakeFrame의 이름으로 변경하여 생성자가되도록해야합니다.

+0

프레임은 MakeFrame.java에서 초기화됩니다. 또한 MakeFileMenu.java에서 '프레임'이라는 MakeFrame 객체를 생성하는 데 사용했습니다. 'frame'이라는 객체를 사용하여 'frame'메소드를 호출하고 있습니다. – JackSparrow123

+0

틀렸어. 첫 번째 프레임을 초기화했지만 frame.frame은 초기화하지 않았다. . MakeFrame에서 초기화하는 메서드는 MakeFileMenu의 범위에서 호출되지 않습니다. Main에서 makeFrame을 호출했지만 두 가지가 있습니다. 또한 MakeFileMenu에서 생성자를 사용하지 않았습니다. 이게 도움이 되길 바란다! – zibi

+0

솔직히 말해서 나는 아직도 혼란 스럽다. "MakeFrame frame = new MakeFrame();"이 아닙니다. 생성자를 사용하고 있습니까? – JackSparrow123