JFrame 클래스는 Frame 클래스의 하위 클래스입니다. 프레임에 추가된 컴포넌트들은 콘텐츠(content)라고 부르며, 이들은 contentPane에 의해 관리됩니다. JFrame은 제목 표시줄(title), 테두리(border), 선택적인 메뉴 바(menu bar), 그리고 사용자 정의 컴포넌트들을 포함하는 윈도우입니다.
기본적으로 화면 오른쪽 상단의 버튼을 클릭하여 JFrame을 최소화하거나 최대화할 수 있습니다. 하지만 코드로도 동일한 동작을 구현할 수 있는데, setState(JFrame.ICONIFIED)를 호출하면 프레임이 최소화되고, setExtendedState(JFrame.MAXIMIZED_BOTH)를 호출하면 프레임이 최대화됩니다.
예제 코드
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JFrameIconifiedTest extends JFrame implements ActionListener {
private JButton iconifyButton, maximizeButton;
public JFrameIconifiedTest() {
setTitle("JFrameIconified Test");
iconifyButton = new JButton("JFrame Iconified");
add(iconifyButton, BorderLayout.NORTH);
iconifyButton.addActionListener(this);
maximizeButton = new JButton("JFrame Maximized");
add(maximizeButton, BorderLayout.SOUTH);
maximizeButton.addActionListener(this);
setSize(400, 275);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public void actionPerformed(ActionEvent ae) {
if(ae.getSource().equals(iconifyButton)) {
setState(JFrame.ICONIFIED); // 프레임을 최소화
} else if(ae.getSource().equals(maximizeButton)) {
setExtendedState(JFrame.MAXIMIZED_BOTH); // 프레임을 최대화
}
}
public static void main(String args[]) {
new JFrameIconifiedTest();
}
}실행 결과
위 프로그램을 실행하면 두 개의 버튼이 포함된 창이 나타납니다. "JFrame Iconified" 버튼을 클릭하면 프레임이 작업 표시줄로 최소화되고, "JFrame Maximized" 버튼을 클릭하면 프레임이 화면 전체 크기로 최대화됩니다.
핵심 정리
setState(JFrame.ICONIFIED)는 프레임을 아이콘 형태(최소화)로 전환하며, setExtendedState(JFrame.MAXIMIZED_BOTH)는 가로와 세로 방향 모두를 확장하여 프레임을 최대화합니다. 이 메서드들은 사용자가 직접 버튼을 클릭하지 않아도 특정 이벤트 발생 시 자동으로 창 상태를 변경해야 하는 경우에 유용하게 활용됩니다.