Swing,Frame,Component

ChoRong0824·2022년 9월 16일
1

Java_GUI

목록 보기
1/9

Swing 으로 만든 GUI 프로그램 샘풀 분석

swing 클래스의 특징

  • 클래스 이름이 J 자로 시작

  • 화려하고 다양한 컴포넌트로 쉽게 GUI 프로그래밍
    (컴포넌트(Component)란 프로그래밍에 있어 재사용이 가능한 각각의 독립된 모듈)
    => 즉, 다시말해 컴포넌트(component)란 여러 개의 프로그램 함수들을 모아 하나의 특정한 기능을 수행할 수 있도록 구성한 작은 기능적 단위를 말합니다.

  • 스윙 컴포넌트는 2가지 유형
    - JComponent는 상속받는 클래스 (대부분의 스윙 컴포넌트)
    - AWT의 Container를 상속받는 몇 개의 클래스 (JApplet, JDialog, JFrame 등)

  • JComponent
    - 스윙 컴포넌트의 공통적인 속성을 구현한 추상 클래스
    - AWT의 Component를 상속받음

  • 컨테이너
    - 다른 GUI 컴포넌트를 포함할 수 있는 컴포넌트
    - java.awt.Container 상속
    - 다른 컨테이너에 포함될 수 있음
    - 종류들

    • AWT 컨테이너 : Panel, Frame, Applet, Dialog, Window
    • Swing 컨테이너 : JPanel, JFrame, JApplet, JDialog, JWindow
  • 최상위 컨테이너
    - 다른 컨테이너에 속하지 않고 독립적으로 출력가능한 컨테이너
    // 오브젝트랑 같은 느낌인건가?? , 알아보기

    • JFrame, JDilog, JApplet

        -모든 컴포넌트는 컨테이너에 포함되어야 화면에 출력가능

  • 컴포넌트
    - 컨테이너에 포함되어야 화면에 출력될 수 있는 순수 컴포넌트
    - 모든 컴포넌트는 java.awt.Component를 상속받음
    - 모든 스윙 컴포넌트는 javax.swing.JComponent를 상속받음

스윙 패키지 사용을 위한 import 정리

  • import java.awt.*; // 그래픽 처리를 위한 클래스들의 경로명
  • import java.awt.event.*; // AWT 이벤트 사용을 위한 경로명
  • import javax.swing.*; // 스윙 컴포넌트 클래스들의 경로명
  • import javax.swing.event.*; //스윙 이벤트를 위한 경로명


스윙 프레임

  • 모든 스윙 컴포넌트를 담는 최상위 GUI 컨테이너
    - JFrame을 상속받아 구현
    • 컴포넌트가 화면에 보이려면 스윙 프레임에 부착되어야 함
    • 프레임을 닫으면 프레임 내의 모든 컴포넌트가 보이지 않게 됨
  • 스윙 프레임(JFrame) 기본 구성
    - 프레임 : 스윙 프로그램의 기본 틀
    - 메뉴바 : 메뉴들이 부착되는 공간
    - 컨텐트 팬 : GUI 컴포넌트들이 부착되는 공간

프레임에 컴포넌트 붙이기

3개의 버튼 컴포넌트를 가진 스윙프레임 만들기

  • 응용프로그램 내에서 스스로 종료
    System.exit(0);
    - 언제 어디서나 무조건 종료
  • 프레임 종료버튼(x)이 클릭되면 어떤 일이 일어나는가?
    - 프레임을 종료하여 프레임 윈도우가 닫힘
           - 프레임을 종료하여 프레임 윈도우가 닫힘
    - 프레임이 보이지 않게 되지만 응용프로그램이 종료한 것 아님
    • 키보드나 마우스 입력을 받지 못함
    • 다시 setVisible(true)를 호출하면 보이게 되고 이전 처럼 작동함
  • 프레임 종료버튼이 클릭될 때 프레임을 닫고 응용 프로그램이 종료하도록 하는 방법
    frane.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

main() 종료 뒤에도 프레임이 살아 있는 이유?

  • 스윙 프로그램이 실행되는 동안 생성되는 스레드
    - 메인 스레드
         -main()을 실행하는 스레드
          -자바 응용프로그램의 실행을 시작한 스레드
    - 이벤트 분배 스레드
          - 스윙 응용프로그램이 실행될 때 자동으로 실행되는 스레드
          - 이벤트 분배 스레드의 역할
                 - 프레임과 버튼 등 GUI 화면 그리기
                 - 키나 마우스 입력을 받아 이벤트를 처리할 코드 호출
  • 자바 응용프로그램의 종료 조건
    - 실행 중인 사용자 스레드가 하나도 없을 때 종료
  • 스윙 프로그램 main() 종료 뒤 프레임이 살아있는 이유
    - 메인 스레드가 종료되어도 이벤트 분배 스레드가 살아 있어 프레임 화면을 그리고 마우스나 키 입력을 받기 때문
profile
컴퓨터공학과에 재학중이며, 백엔드를 지향하고 있습니다. 많이 부족하지만 열심히 노력해서 실력을 갈고 닦겠습니다. 부족하고 틀린 부분이 있을 수도 있지만 이쁘게 봐주시면 감사하겠습니다. 틀린 부분은 댓글 남겨주시면 제가 따로 학습 및 자료를 찾아봐서 제 것으로 만들도록 하겠습니다. 귀중한 시간 방문해주셔서 감사합니다.

0개의 댓글