Java Swing 01. JFrame

BuBuck·2025년 8월 30일

Java Swing

목록 보기
2/3
post-thumbnail

JFrame이란?

JFrameJava Swing GUI 라이브러리에서 화면에 표시되는 창(window)을 만드는데 사용되는 가장 기본적인 구성요소이다.

💡 우리가 보는 애플리케이션의 창문 또는 액자와 같은 역할을 한다.


JFrmae의 주요 특징

최상위 컨테이너 (Top-Level Container)

JFrame은 다른 컨포넌트에 포함되지 않고, 독립적으로 존재할 수 있는 최상위 GUI 컨테이너이다.

💡 모든 Swing 애플리세이션은 최소 하나 이상의 최상위 컨테이너를 가진다.

기본 창틀 제공

JFrame은 창을 만드는 데 필요한 기본적인 요소들을 이미 갖추고 있다.

  • 제목 표시줄(Title Bar): 창의 제목을 표시하는 부분
  • 창 조절 버튼: 최소화, 최대화, 닫기(X) 버튼
  • 콘텐츠 영역 (Content Pane): 실제 버튼, 패널 등이 배치되는 내용물 영역

상속을 통한 확장

보통 JFrmae 클래스를 직접 사용하기보다, JFrmae상속(extends)하는 새로운 클래스를 만들어 프로그램을 개발한다.
이렇게 하면 원하는 기능과 모양을 가진 자신만의 커스텀 창을 쉽게 만들 수 있다.


JFrame 핵심 설정 메소드

창 기본 설정

  • 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);

창 닫기 동작

  • setDefaultCloseOperation(int operation): 창의 닫기 버튼(X)을 눌렀을 때의 동작을 정의한다.
    // 창의 닫기 버튼(X)을 눌렀을 때 프로그램을 완전히 종료하게 설정
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    동작

    • JFrame.EXIT_ON_CLOSE: 프로그램을 완전히 종료
    • JFrame.DISPOSE_ON_CLOSE: 현재 창만 닫고 프로그램은 계속 실행
    • JFrame.HIDE_ON_CLOSE: 창을 보이지 않게 숨김
    • JFrame.DO_NOTHING_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);
profile
커피대신 커피(JAVA) 마시기

0개의 댓글