보통 Java에 관해서 질문 할 필요는 없지만, 지금 뭔가 이상하게 붙어 있습니다. 그리고 나는 계속해서 뭔가를 놓치고 있다고 생각합니다.자바 변경 메뉴에서보기가 작동하지 않습니다.
JMenuBar가있는 JFrame 응용 프로그램이 있습니다. 메뉴 표시 줄의 항목에는 ActionManager라는 클래스 인 PageManager가 있습니다. 디버그는이 모든 것이 잘 작동 함을 보여줍니다. 전체 많은 같이 초기화 :
하는 UI 클래스에서public static void main(String[] args) {
UI ui = new UI(); //The JFrame
PageManager pm = new PageManager(ui); //Menu ActionListener
MenuBar mb = new MenuBar(pm); //MenuBar
ui.setJMenuBar(mb);
ui.setDefaultCloseOperation(0);
ui.setVisible(true);
ui.setPage(new Home().getPanel()); //a View
}
, 나는 다음과 같은 방법이 있습니다
public void setPage(JPanel p) {
System.out.println("Set page");
this.remove(page);
System.out.println("Removed");
this.add(p);
System.out.println("Added " + p);
}
ui.setPage(new Home().getPanel());
메소드 호출 잘 작동합니다. PageManager의 생성자로 옮기면 역시 작동합니다. 내가 ui.setPage(new Preferences().getPanel());
으로 바꿔도 작동합니다. Home 및 Preferences 클래스는 JPanel을 작성해 getPanel 메소드를 사용해 돌려주는 View입니다.
그러나 actionListener를 사용하여 페이지를 변경하는 것이 효과가없는 것으로 보입니다. 모든 System.out.println 행은 잘 인쇄되지만 페이지는 변경되지 않습니다. PageManager에서 이것을 사용합니다 :
(ActionListener는 이벤트를 선택하고 소스를 확인한 다음 changePage를 호출합니다).
모든 것이 실행되고 콘솔 출력에 따라 정상적으로 작동하는 것처럼 보이지만 페이지는 내가 수정 한 내용 (예 : 작은 수정 포함)을 변경하지 않습니다.
어떤 도움이 크게 appreceated 것입니다!
종류와 관련,
내가 첨부했던 샘플 프로그램을 점검하고 revalidate() 및 repaint()를 주석에 넣으려고하면 변경 사항이 표시되지 않지만 주석을 제거하지 않으면 해당 JFrame에서 변경 사항이 실현됩니다 . –