
JFrame은 Java Swing GUI 라이브러리에서 화면에 표시되는 창(window)을 만드는데 사용되는 가장 기본적인 구성요소이다.
💡 우리가 보는 애플리케이션의
창문또는액자와 같은 역할을 한다.
JFrame은 다른 컨포넌트에 포함되지 않고, 독립적으로 존재할 수 있는 최상위 GUI 컨테이너이다.
💡 모든
Swing 애플리세이션은 최소 하나 이상의 최상위 컨테이너를 가진다.
JFrame은 창을 만드는 데 필요한 기본적인 요소들을 이미 갖추고 있다.
보통 JFrmae 클래스를 직접 사용하기보다, JFrmae을 상속(extends)하는 새로운 클래스를 만들어 프로그램을 개발한다.
이렇게 하면 원하는 기능과 모양을 가진 자신만의 커스텀 창을 쉽게 만들 수 있다.
setTitle(String title): 창의 제목 표시줄에 나타날 텍스트를 설정한다.
// 창의 제목을 Hello Swing! 으로 설정
setTitle("Hello Swing!");
setSize(int width, int height): 창의 가로(width)와 세로(height) 크기를 픽셀 단위로 설정한다.
// 창의 크기를 가로: 800, 세로: 600 으로 설정
setSize(800, 600);
setLocationRelativeTo(Component c): 창이 나타날 위치를 설정합니다.
// 창이 나타날 위치를 화면 중앙으로 설정
setLocationRelativeTo(null);
💡
null대신 다른 GUI 컴포넌트 객체를 전달하면, 새로 뜨는 창이 해당 컴포넌트의 중앙에 맞춰서 나타난다.
setVisible(boolean b): 창을 화면에 보이거나(true) 숨길(false) 때 사용한다.
// 창을 화면에 보이게 설정
setVisible(true);
// 창의 닫기 버튼(X)을 눌렀을 때 프로그램을 완전히 종료하게 설정
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);add(Component comp): 버튼(JButton), 패널(JPanel) 등 다른 GUI 컴포넌트를 프레임에 추가한다.
// 창에 WindowPanel을 추가
add(new WindowPanel());
setLayout(LayoutManager manager): 컴포넌트들이 프레임안에서 배치되는 방식을 결정한다. (기본값: BorderLayout)
// 창 안에 컴포넌트들이 배치되는 방식을 FlowLayout으로 설정
setLayout(new FlowLayout());
💡 레이아웃 매니저에는
BorderLayout,FlowLayout,GridLayout,CardLayout,BoxLayout등이 있다.
setResizable(boolean resizable): 사용자가 마우스로 창 크기를 조절 할 수 있는지 여부를 설정한다. (최대화 불가)
// 창 크기를 조절 할 수 없게 설정
setResizable(false);
pack(): 프레임 안에 추가된 컴포넌트들의 크기에 맞춰 프레임 크기를 자동으로 조절한다.
getContentPane(): 컴포넌트들이 실제 추가되는 영역(Content Pane)을 가져온다.
// 창의 배경색을 BLACK(검은색)으로 설정
getContentPane().setBackground(Color.BLACK);