Jeomxon's Tech Note

2019-07-09 모각코(1) 본문

Mogaco/2019하계

2019-07-09 모각코(1)

저문(jeomxon) 2019. 10. 3. 12:20

--------------------------------------------------------------------------

날짜 : 2019-07-09

회차 : 1

목표 : Chapter 13 그래픽 사용자 인터페이스 개요 끝내기

---------------------------------------------------------------------------

 

***오늘 배운 내용 정리***

 

Chapter 13. GUI

 

1. 그래픽 사용자 인터페이스

GUI는 컴포넌트들로 만들어진다

컴포넌트 : 레이블, 버튼, 텍스트 필드와 같은 GUI를 작성하는 기본적인 빌딩 블록 == 컨트롤(in 윈도우 시스템)

 

GUI객체는 두 가지가 있다.

1. AWT(Abstract Windows Toolkit)

2. Swing

 

*AWT의 장단점

장점 : 여러 플랫폼에서 쉽게 컴포넌트를 제공할 수 있음

단점 : 컴포넌트가 플랫폼에 종속적이기 때문에 실행되는 플랫폼에 따라서 컴포넌트의 모습이 달라짐

 

*Swing의 장점

장점 : 컴포넌트가 자바로 작성되어 있어 어떤 플랫폼에서든지 일관된 화면을 보여줄 수 있음

 

-스윙은 AWT를 대체하기 위해 AWT의 컴포넌트 이름 앞에 J를 붙인 동일한 기능을 하는 컴포넌트들을 사용

 

**스윙

룩앤필 : 각각의 운영체제가 지원하는 GUI의 외관

-자바 룩앤필, 윈도우 룩앤필, 모티프 룩앤필 등이 제공

-대부분의 경우 javax.swing과 javax.swing.event 를 사용

 

**스윙의 특징

-JFC(Java Foundation Class) : 애플리케이션에 그래픽 사용자 인터페이스, 풍부한 그래픽 기능, 다양한 언어와 다양한 입력 장치들을 지원

 

--JFC가 제공하는 기능--

1. 스윙 GUI 컴포넌트

2. 자바 2D API

3. 교체 가능한 룩앤필 지원

4. 데이터 전송

5. 되돌리기 기능

 

2. 컨테이너

**컨테이너란?

컨테이너 : 다른 컴포넌트들을 내부에 넣을 수 있는 컴포넌트

-기본 컴포넌트 : JButton, JLabel, JCheckbox, JChoice, JList, JMenu, JTextField, JScrollbar, JTextArea, JCanvas 등

-컨테이너 컴포넌트 : JFrame, JDialog, JApplet, JPanel, JScrollPane 등

 

**컨테이너의 종류

최상위 컨테이너와 일반 컨테이너로 나뉨

 

-최상위 컨테이너 : 절대 다른 컨테이너 안에 포함될 수 없는 컨테이너

ex) 프레임(JFrame), 다이알로그(JDialog), 애플릿(JApplet) 등

 

-일반 컨테이너 : 다른 컨테이너 안에 포함될 수 있는 컨테이너

ex) 패널(JPanel), 스크롤 페인(JScrollPane) 등

 

3. GUI 작성 절차

-스윙에는 JFrame, JDialog, JApplet의 3가지 최상위 컨테이너가 존재

-JFrame : 윈도우와 메뉴를 가지는 일반적인 데스크탑 애플리케이션에 적합

-JDialog : 메뉴가 없는 대화 상자 형식의 간단한 애플리케이션에 사용

-JApplet : 애플릿을 작성하는데 사용

 

-프레임 생성하기 #1

-JFrame 클래스에 의하여 표현

 

위와 같은 코드를 실행하게 되면

 

위 그림과 같이 Frame Test가 만들어지게 된다!!

 

**코드설명

import javax.swing.*; : javax는 확장 패키지를 뜻함 스윙클래스 안에있는 모든 것을 사용한다는 의미

JFrame f = new JFrame("Frame Test"); : 참조변수의 이름이 f 인 JFrame 객체를 생성하고 프레임 제목을 ""안에 작성

setSize(x,y); 가로 x, 세로 y 픽셀의 프레임 크기 지정

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); : 사용자가 오른쪽 상단의 close 버튼을 눌렀을 때 프로그램을 종료함을 나타냄, 써주지 않으면 보이지 않더라도 계속 실행될 수 있으므로 중요!!

setVisible(true); : 프레임을 생성한 후 사용자가 볼 수 있게 해주는 메소드

 

-컴포넌트 생성 및 추가

add()메소드를 이용하여 컴포넌트를 컨터이너에 추가

 

 

 

위 코드를 실행시켜

 

 

위와 같은 프레임에 버튼을 추가하였다

 

4. 프레임의 속성 변경하기

-설정자 메소드는 모두 JFrame 클래스에 정의되어있는 것이 아니다!!

 

스윙관련 클래스의 계층구조

 

 

 

-JFrame에 있는 중요한 메소드를 이용하여 간단한 예제를 작성해 보았다

 

 

위 코드를 실행하기에 앞서

 

자바 프로젝트 파일 내부에 icon.jpg를 넣은 모습

 

위와 같이 프로젝트 파일안에 넣어준다. 그리고 코드를 실행하게 되면

 

 

위 그림과 같이 My Frame 이라는 타이틀 왼쪽에 icon.jpg 라는 이미지를 삽입된 모습을 확인할 수 있다.

(단, icon.jpg라는 파일을 Java Project 파일 안에 넣어두어야 한다.)

 

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

***활동 정리***

느낀점 : 1학기 중에 배웠던 객체개념이 GUI에도 쓰인다는 사실을 깨닫게 되었고 일단 시작을 했다는 사실에, 그리고 앞으로 무언가를 이뤄나갈 수

있다는 사실이 행복했다. 아침 이른시간이었음에도 불구하고 생각보다 집중이 잘되고 시간이 너무 빨리 지나가서 놀랐다. 그리고 내가 평소에 해왔던 자바와 달리 그래픽이다 보니 뭔가 새로운 언어를 배우는 듯한 느낌이 들어서 더 집중할 수 있었던 것 같다.^_^

 

아쉬운 점 : 일단 시작이라서 그런지 포스팅을 위한 시간이 많이 소요됐던 점이 좀 아쉬웠다. 하지만 다음 회차부터는 이런 부분에 있어서는 시간이 단축될 것이기 때문에 이번 회차에서 느낄 수 있던 가장 큰 아쉬움이었던 것 같다. 또한 Chapter13을 끝까지 공부하고 싶었는데 그 중 마지막 소단원 5를 끝내지 못해서 아쉬웠다. 다음부터는 미리 분량을 파악하고 실현가능한 공부량을 구체적으로 설정해야겠다고 다짐하는 계기가 되었다.^_^

 

'Mogaco > 2019하계' 카테고리의 다른 글

2019-07-18 모각코(3)  (0) 2019.10.29
2019-07-16 모각코(2)  (0) 2019.10.29