2015-01-10 5 views
0

내 응용 프로그램을 개발하기 시작했을 때, 저는 Seprate JFrame 프레임을 개발하고 하나씩 테스트했습니다. 자, 내 애플 리케이션을위한 메인 윈도우를 만들고 싶습니다. 나는 많은 것을 읽었지 만, 지금까지는 자바와 스윙에서 이렇게하기가 어렵다. JFrame의 인스턴스로 메인 윈도우를 생성하여이 작업을 시도했지만 다른 JFrame 안에 JFrame을 표시 할 수 없다는 오류가 나타납니다.JAVA/SWING 응용 프로그램의 메인 윈도우 만들기

public class MainWindow extends JFrame{ 
private JFrame frame1; 
private JFrame frame2; 


public MainWindow(){ 

frame1 = new JFrame(); 
frame2 = new JFrame(); 

setLayout(new BorderLayout()); 

add(frame1,BorderLayout.CENTER); 
add(frame2,BorderLayout.NORTH); 

pack(); 

} 

} 

답변

1

이것은 일반적으로 JFrame과 같은 최상위 컨테이너에서 직접 확장하는 것이 바람직하지 않은 이유 중 하나인데, 이는 사용자를 단일 용도로 제한합니다.

창 기반 구성 요소를 다른 컨테이너에 추가 할 수 없습니다. 현재의 각 프레임을 JPanel과 같은 기본 컨테이너로 분리해야만 다른 창에 추가 할 수 있습니다.

CardLayout 또는 JTabbedPane 또는 심지어 JDesktopPane 또는 다른 레이아웃 관리자를 사용하여 필요에 따라 개별적인보기를 사용자에게 제공 할 수 있습니다.

참조 ...

1

JFrame은 창입니다.

창 내부에 창을 넣을 수 없습니다.

JPanel을 찾고있을 수 있습니다. JPanel은 다른 구성 요소를위한 매우 간단한 컨테이너입니다 (JPanel을 더 포함 할 수 있음). JFrameJPanel 초를 추가 할 수 있습니다.

+0

내가 entrie JF를 추가하려면 좀 더 아이디어를

rame 또는 부모 JFrame 내부에서 어떻게 할 수 있습니까? –

+0

@abdouamer Immibis가 말했듯이, 당신은 할 수 없습니다. 이것이 우리가 사람들을'JFrame'에서 확장하는 것을 막아줌으로써 여러분을 구현에 고정시킨다.대신,'JPanel'과'CardLayout' 또는'JTabedPane' (또는 다른 레이아웃 관리자)을 사용하여 별도의 뷰를 표시하십시오. – MadProgrammer

0

대신 JPanel

panel = new JPanel(); 

add(panel,BorderLayout.Center); 

JPanel에 당신이 포장 할 수있는에서 다른 컨테이너로 사용 당신이 그렇게 눈치처럼 당신이 JFrame의 내부 JFrame의를 사용할 수있는 모든이
먼저 처리 할 수있는 여러 가지 방법이 있습니다 많은 스윙 구성 요소.

새 창을 열려면 anoter JFrame을 만들어 보이게하십시오. add 메서드를 사용하여 Jframe에 추가 할 수 없습니다. 변수에 저장하고 같은 클래스의 다른 프레임에 표시되는 것을 처리 할 수 ​​있습니다. 당신이 MainWindow를가 MainWindow를이 코드를 추가해야 싶어으로
:

frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 

이것은 당신이 메인 프레임을 닫으면 응용 프로그램이 종료됩니다 것을한다 (다른 프레임에 당신이 일반적으로이를 구현 안)