2011-01-12 4 views
0

저는 Java를 배우고 기초를 테스트하기 위해 하나의 프로젝트를 구축 중입니다.메뉴 클릭을 기반으로 새로운 GUI를 표시하는 방법

나는 별도의 GUI를 별도의 파일로 만든

1)Front 
2)Admin 
3)Booking 

같은 하나 개의 메뉴 항목 FILE 다음 하위 메뉴 항목이 있지만, 나는 그들이 하위 메뉴에 클릭으로, 한 지역에서 볼 수 있어야한다는 원하는

나는 swing, JmenuBar를 사용하고 있습니다. 또한 다른 guis는 Jframe을 사용합니다.

답변

1

내가 별도의 GUI를 별도의 파일로 만든하지만 난 그들이 하나 개의 영역에 표시해야한다는 원하는

오직 당신을 원하기 때문에 참으로 귀하의 요구 사항을 단일 JFrame의를 가져야한다

대부분의 응용 프로그램 별도의 GUI가 동일한 영역에 표시되도록합니다.

따라서 다른 GUI는 JFrame을 확장해서는 안되며 대신 JPanel을 확장해야합니다. 그런 다음 실제 GUI에서 CardLayout을 사용하여 메뉴에서 선택된 패널에 따라 패널을 in/out으로 바꿀 수 있습니다. 이 모든 기본 내용은 Swing tutorial에 있습니다. 난 당신이 섹션 시작 것 같아요

  1. 카드 레이아웃을 사용하는 방법
  2. 메뉴를 사용하는 방법
-1

이렇게하려면 각 메뉴 항목에 대한 ActionListener가 필요합니다. 그런 다음 각 수신기가 원하는 JFrame의 인스턴스를 원하는 위치로 보내고 표시 할 위치를 제어하는 ​​메서드에 전달하게합니다.

//Make menu items 
JMenuItem font = new JMenuItem(); 
font.addActionListener(new ActionListener() { 
    showWindow(new FontFrame()); 
}); 
JMenuItem admin = new JMenuItem(); 
admin.addActionListener(new ActionListener() { 
    showWindow(new AdminFrame()); 
}); 
... 
//define frame handling method 
void showWindow(JFrame f) { 
    ... 
    f.setVistible(true); 
} 
+1

기술적으로 문제가 해결 것이지만; CardLayout을 사용하는 것이 훨씬 더 나은 방법입니다. – Menefee

0

다른 사람들은 이미이 문제의 절반 그래서 약 ActionListeners 물건을 이야기했다. 나머지 절반은 실제로 여러 창을 처리하는 방법입니다. 다른 GUI마다 JFrame을 사용하지 않을 것입니다. JFrame의 정신은 응용 프로그램 당 하나의 인스턴스 만 가져야한다는 것을 의미합니다. 대신 JDialog 또는 JInternalFrame을 사용합니다. 난 당신이 multiple document interface, 모든 하위처럼 뭔가를 구현 할 수 있습니다 ... 한 지역에서 볼 수 있어야합니다 ...

하지만 JInternalFrame 당신이

무슨 뜻인지 모르겠어요 GUI는 기본 UI의 프레임 내에 포함됩니다. JDialogJFrame과 같은 독립적 인 창을 제공합니다.

0

"한 영역에서 볼 수 있어야합니다."라고 말하면 모달을 의미하는 경우 모든 JFrames를 JDialog로 변경하고 주 메뉴가 포함 된 JFrame 만 남겨 두어야합니다.

관련 문제