자바GUI1(국비과정)

min seung moon·2021년 3월 12일
0

영진직업전문학교

목록 보기
2/10

GUI(GraphicUserInterface)

  • 사용자가 가장 쉽게 프로그램과 의사 소통할 수 있는 방식은 그래픽 환경을 사용하는 것
  • GUI 환경에 맞는 프로그램 개발하여 사용하는 것

1. JAVA GUI 환경

01. AWT(AbstractWindowToolkit)

  • 운영 체제가 제공하는 네이티브 UI 컴포넌트 이용
  • 운영 체제에 따라 UI의 모양 서로 달랐고, 종류도 제한적
  • 운영체제에 종속적
  • package java.awt.*;
  • package java.awt.event.*;
  • Button, Label ..., 패스워드 필드 & 슬라이더 없음

02. Swing

  • 어떤 운영체제에서도 실행시 일관된 화면을 보여준다
  • 자바가 직접 각 컴포넌트를 작성한 것
  • AWT에는 없는 다양하고 많은 컴포넌트들을 제공
  • 사용자는 애니메이션 추가된 시각적 운영 체제의 네이티브 UI더 선호
    • 네이티브 UI로 보여지도록 자신의 UI 재정비
    • 실행 성능이 느려지고, 메모리 더 많이 사용
  • package javax.swing.*;
  • package javax.swing.event.*;
  • JButton, JLabel, ... 패드워드필드(JPassworldField)&슬라이더(JSlider) 있음

03. JavaFX

  • 가볍고 풍부한 UI제공
  • 레이아웃, 스타일, 애플리케이션 로직 분리 개발
  • 자바7 업데이트 6버전부터 JavaFX2.2를 JDK와 JRE에 포함

2. 컴포넌트의 상속 관계

  • 최상위 컴포넌트 Object

3. GUI 개발 절차

  • 프레임(JFrame, 최상위 컴포넌트) 객체 생성
    -> import javax.swing.JFrame;
    -> JFrame framename = new JFrame();
  • 프레임에 스윙 컴포넌트 붙이기
    -> import javax.swing.; // 컴포넌트 생성은 swing 중심
    -> import javax.awt.
    ; // 배치 관리자, 이벤트는 awt 중심
    -> Panel, Layout, 컴포넌트 구성
  • 이벤트 처리
    -> import java.awt.event.*;
    -> 이벤트 처리에 필요한 인터페이스, 메소드, 클래스
    -> MouseLitener, MouseMotionListener, actionPerformaed, ActionEvent, KeyListener... (Listener은 인터페이스로 구축되어 있다)
  • 프레임 가시화(활성화)
    -> setVisible()...

4. 컴포넌트와 컨테이너의 개념

  • 컴포넌트 : 컴포넌트들은 GUI 구성하는 요소들
    -> JButton, JLabel, JCheckbox, JList, JMenu, JTextField, JScrollbar 등 GUI구성하는 구성요소들

  • 컨테이너 컴포넌트
    -> 컨테이너는 다른 컴포넌트를 안에 넣을 수 있는 컴포넌트로서
    -> JFrame, JDialog, JPanel, JScrollPane, JApplet 등 컨테이너 클래스

  • 프레임(frame)
    -> 최상위 컨테이너
    -> 프레임은 컨테이너 위에 올릴 수 없다

  • 패널(panel)
    -> 패널은 컴포넌트들을 올릴 수 있는 일반컨테이너
    -> 일반 컨테이너는 최상위 컨테이너에 올릴 수 있다

5. 배치 관리자(lay out manager)

  • 컨테이너에서 컴포넌트를 배치하는 방법
    -> 배치 관리자의 개요
    -> 배치 관리자의 사용
    -> 배치관리자 종류
    -> FlowLayout(panel의 defulat 배치 관리자, 물 흐르듯이 위에서 부터 옆으로 순서대로 배치)
    -> BorderLayout(동, 서, 남, 북, 센터-default)
    *-> GridLayout(테이블처럼 행렬로 배치)
    -> BoxLayout
    -> CardLayout

6. Component

  • label
  • button
  • text
  • textfield
  • text area
  • scroll
  • check box
  • radio
  • border

7. 스윙의 클래스 상속 계층 구조

  • JComponent 클래스는 모든 스윙 컴포넌트의 부모 클래스
  • Object -> Component(그리기, 이벤트 처리) -> Container (컨테이너에 컴포넌트 추가, 레이아웃) -> JComponent ( 스윙 컴포넌트에 공통적인 속성과 메소드 모두 제공)
    -> Jlabel
    -> Jpanel
    -> JCompboBox
    -> JScrollBar
    -> JText Component

8. 주요 컴포넌트

  • Component 클래스
    • 모든 컴포넌트의 공통 속성과 크기, 모양, 색상, 폰트, 이동, 삭제, 이벤트 처리등을 수행 할 수 있는 메소드 제공
    • Color getBackground() : 컴포넌트의 배경석을 반환한다
    • Color getForeground() : 컴포넌트의 전경색을 반환한다
    • Graphics getGraphics() : 컴포넌트의 그래픽 컨텍스트를 반환
    • String getName() : 컴포넌트의 이름을 반환
    • Container getParent() : 컴포넌트를 포함하는 컨테이너를 반환
    • Dimension getSize() : 컴포넌트의 크기를 반환
    • void setBackground(Color c) : 컴포넌트의 배경색을 설정
    • void setEnabled(boolean b) : 컴포넌트를 활성화, 비활성화 한다
    • void setFont(Font f) : 컴포넌트의 폰트를 설정
    • void setFroeground
    • setLocation
    • setSize
    • setVisible

9. 이벤트 처리를 위한 프로그래밍 과정

  • 1단계 : 이벤트 소스 결정

    • 이벤트를 발생시킬 컴포넌트 결정
  • 2단계 : 이벤트 리스너 구현

    • 이벤트 소스에서 발생한 이벤트를 처리하는 객체로
    • 이벤트리스너 인터페이스 구현항 클래스로 정의
    • 이 때 반드시 이벤트 리스너 인터페이스의 추상메소드를 오버라이딩(재정의)하여 이벤트 발생시 수행할 동작을 기술
    • 이벤트리스너 호출시 이벤트 소스 정보를 이벤트 핸들러 메소드에 전달하여 동작에 대한 이벤트 처리
  • 3단계 : 이벤트 소스에 이벤트리스너 등록

    • addXXXListener() 메소드를 통해 컴포넌트에 이벤트리스너를 등록(2단계와 병행)

10. 이벤트 처리 방법

  • 독립적인 클래스로 이벤트 처리기를 작성
    • 족립 클래스로 작성하면 이벤트 리스너를 여러 클래스에서 사용할 때 접합
  • 내부 클래스(inner class)로 이벤트 처리기를 작성
    • 별도의 클래스로하면 MyFrame안의 멤버 필드(변수)를 쉽게 사용할 수 없다
    • MyListener클래스를 내부 클래스로 만들면 외부 클래스인 MyFrame의 멤버를 직접 접근 가능
    • class MyListener impliment ActionListner
  • 프레임클래스에 이벤트 처리기를 구현
profile
아직까지는 코린이!

0개의 댓글

관련 채용 정보