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개의 댓글