JAVA에서 Jframe관련 문서중 핵심부분을 요약, 읽어가며 어떤 기능이 있는지 알아보겠습니다.
관련 문서 위치 (https://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html#setDefaultCloseOperation(int))
요약 : JFrame은 add,remove,setLayout을 제외하고 JFrame.getcontentPane()을 통해 메소드 구현이 가능하다. 그리고, 윈도우 창이 꺼졌을 때도 프로그램이 진행될 수 있게 했다.
간단 해설
JFrame은 java.awt.Frame을 상속받고 몇 가지 기능을 더 추가했습니다.
대표적으로 JFrame은 JRootPane창을 유일한 자식으로 갖고 있습니다. 그렇기 때문에 ContentPane부분을 통해서 Content를 추가할 수 있습니다. JFrame.getContentPane()을 기본으로 한 뒤에 Component를 추가하거나 삭제해야 합니다.
하지만, 편의상 add, remove, setLayout부분은 굳이 JFrame.getcontentPane().add(component)를 하지 않고, JFrame.add(component)를 할 수 있게 했습니다. 그리고 contentPane은 언제나 non-null로 만들었습니다.
두번째로, JFrame은 유저가 윈도우창을 닫았을 때 어떻게 행동할 것인지에 관해 설정할 수 있게 했습니다. 해당 메소드는 setDefaultClose Operation(int)로 구현이 되었있고, 창이 닫게 되더라도 유지할 수 있게 했습니다.
원문번역본
Jframe은 java.awt.Frame의 확장버전이라고 할 수 있습니다.
JFrame 클래스는 Frame과 다른데, JFrame은 JRootPane을 자식으로 갖고 있습니다.
=> JFrame은 Frame과 달리 JRootPane의 기능을 이용할 수 있다.
ontent Pane(Pane은 창, 유리라는 뜻으로 GUI를 실행했을 때 실행되는 창을 의미한다)은 메뉴와 관련된 부분을 담당합니다.
=> JFrame은 JFrame.getContentPane()을 통해 Component(버튼같은 구성물)을 추가할 수 있는 반면, Frame은 직접 추가한다.
편의상 add, remove, setLayout은 오버라이드했다.
=> JFrame.getContentPane().add())를 하지 않아도 된다는 의미이다.
frame.add(child);
와 같이 작성하면 child가 contentPane 내용창에 추가된다. contentPane은 언제나 non-null이다. null로 설정하면 예외가 바랫한다.
JFrame은 유저가 윈도우창을 닫았을 때 어떻게 행동할 것인지에 관해 명시했다.
해당 메소드는 setDefaultClose Operation(int)로 구현이 되었다. Frame과 같이 하려면 setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE)로 구현하면 된다.
ㅁ 추가로 jframe.setLayout()메소드의 매개변수로 LayoutManager를 설정할 수 있다. 여기서 LayoutManger은 인터페이스로, jframe.setLayout(new GridLayout(3,3));등을 통해 그리드모양으로 설정할 수 있다.
LayoutManager A = new GridLayout(3,3));
jframe.setLayout(A);를 간단하게 쓴 것이다.
ㅁ JFrame이 어떻게 구성되어있나?
https://docs.oracle.com/javase/tutorial/uiswing/components/toplevel.html
JFrame을 기본으로 HierArchy형식으로 추가된다.
Jframe은밑에 ContentPane(내용을 표현하는 창)과 Menu Bar로 구성되어 있다.
GUI의 component는 이 위계질서안에 추가된다. jframe.add(component)를 한다는 것이 위계질서 안으로 들어간다는 것이다. 이 GUI component는 하나의 컨테이너 안에서만 포함될 수 있고, 만약 컨테이너 안에 이미 포함되어 있다면, 다른 컨테이너로 옮기게 된다.
'프로그래밍 일반 > JAVA' 카테고리의 다른 글
[JAVA] GUI Jbutton API문서 읽기 (0) | 2020.02.14 |
---|---|
[JAVA] GUI- JFrame을 만들기 (0) | 2020.02.13 |
[C++/JAVA] 연산자부터 메소드까지 (0) | 2019.11.03 |
[C++/JAVA] 변수부터 배열, 구조체까지 발전 과정 (0) | 2019.11.03 |
[C++/JAVA] 클래스패스와 패키지 (0) | 2019.10.22 |