본문 바로가기
[ JAVA ]/JAVA

[ Java ] GUI 프로그래밍 개념

by 환이s 2023. 1. 7.
CHAPTER 20. GUI 프로그래밍 알아가기

 

 

오늘은 GUI에 대해서 포스팅해보려 합니다!

사실 순수 자바 강의에는 GUI가 포함되지 않는 경우가 많습니다.

변수선언, 변수의 종류, 함수정의...등을 설명하고 이것의 결과를 cmd창에 출력하는 것으로만 강의를 진행합니다. 자바로 처음 프로그램에 입문하시는 분들에게는 조금 어려운 내용이 될 수 있습니다..!!

 

■ GUI란?

 

GUI(Graphical User Interface)는 그래픽 기반의 인터페이스로 우리가 흔히 보는 윈도우 애플리케이션처럼 윈도우 창을 가지고 있으며 버튼을 클릭하고 텍스트를 입력하는 등의 행위를 할 수 있는 화면을 말합니다. 

 

Java를 공부하다 보면 대체 왜 이런 연습을 하는지도 모르겠고 앞으로 내가 Java를 가지고 무엇을 할 수 있는지에 대해서도 모르는 채 그저 코딩하고 검은 창에 실행해 보고 하는 행위를 기계적으로 반복하게 됩니다. 하지만 결과적으로는 코딩을 하시는 분들의 최종목표는 cmd창에서 Java 클래스명으로 실행되는 프로그램이 아니라 윈도우에서 클릭으로 실행할 수 있는 윈도우 프로그램이 되어야 합니다..!! 

 

그럼 GUI에 대해서 포스팅으로 알아봅시다.

 

■  Java의 GUI 프로그래밍 기술

 

 

  • AWT(Abstract Window Toolkit)

 

- GUI 프로그래밍을 위한 도구입니다.

- GUI 프로그래밍에 필요한 다양한 컴포넌트를 제공합니다.

- Java와 C로 구현합니다.

 

  • Swing

 

- AWT를 확장한 GUI 프로그래밍 도구입니다.

- AWT보다 더 많은 종류의 컴포넌트를 제공합니다.

- 순수한 Java로 구현합니다.

 

■  화면 구성 요소

 

1 ) 컴포넌트와 상속관계

 

  • Component : 화면 구성 요소
  • Container : 다른 컴포넌트를 담을 수 있는 컴포넌트(그릇 역할)

 

 

2 ) Container

 

  •  독립적인 Container(스스로 창을 띄울수 있습니다.)

 

1. Frame - 메뉴를 붙일 수 있습니다. (사이즈가 유동적)

2. Dialog - 메뉴를 붙일 수 없습니다. (사이즈가 고정적)

 

  • 종속적인 Container(스스로 창을 띄울 수 없고 다른 프레임이나 다이얼로그에 붙여서 쓴다.)

 

1. Panel

 

- 2개 이상의 컴포넌트를 하나로 묶어서 처리할 때 사용합니다.

- Panel안에 Panel을 넣을 수 있습니다.(다양한 화면 배치에 활용)

 

2. ScrollPane - 스크롤바 패널

 

  • Component를 Container에 추가하는 방법

 

- 대상 컨테이너객체.add(추가할 컴포넌트 객체)

 

frame.add(button); //프레임에 버튼을 추가

 

3 ) 프레임(JFrame) 

 

※ J가 붙은 것은 대부분 Swing Class입니다.

 

  • 독립적인 윈도우창
  • 프레임 생성
JFrame f = new JFrame("프레임의 타이틀");
  • 프레임 사이즈 설정
setSize("가로길이, 세로길이")
pack(); // 필요한만큼 자동으로 사이즈 설정
  • 프레임을 화면에 표시
setVisible(true)
  • 프레임의 닫기 동작
//현재 창만 닫음
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
//모든 창을 닫고 프로그램을 완전히 종료시킴
setDefaultCloseOperation(EXIT_ON_CLOSE);
//화면에서 숨김(종료된 상태가 아님)
setDefaultCloseOperation(HIDE_ON_CLOSE);
  • 중요한 메서드 간단 정리
setLocation(x, y), setBounds(x, y, width, height), setSize(width, height) // 프레임의 위치와 크기를 설정

setIconImage(IconImage) // 윈도우 시스템에 타이틀 바, 태스크 스위처에 표시할 아이콘을 알려줌

setTitle() //타이틀 바의 제목 변경

setResizable(boolean) //사용자가 크기를 조절할 수 있는지를 설정

 

■  RGB Color (Color Class)

 

 

Color 클래스는 말 그대로 색의 정보를 가지고 있습니다.

즉, 빨간색, 녹색, 파란색 값을 저장하고 있는 클래스입니다.

또 투명한 정도를 나타내는 알파 값도 함께 가지고 있습니다.

 

 

  • 색상 설정 코드
new Color( red, green, blue )
new Color( Color.red )

 

■  Laout(화면 배치)

 

  • FlowLayout - 몇 개의 컴포넌트를 자연스러운 크기로 한 줄로 순서대로 배치합니다.

 

 

  • BorderLayout - 한 영역에 1개의 컴포넌트만 배치됩니다.

- 화면을 5개의 영역으로 나누고, 각 영역에 하나의 컴포넌트만 사용 가능합니다.

- 영역을 지정하지 않으면 Center 영역에 배치됩니다.

- 한 영역에 2개 이상의 컴포넌트를 넣으려면 Panel을 사용하셔야 합니다.

 

 

  • GridLayout - 몇 개의 컴포넌트를 행과 열로 동일한 크기로 배치합니다.

 

 

  • CardLayout - 한 개의 프레임에 여러 레이아웃을 표시합니다.

 

 

  • 기본 Layout

 

1. 기본적으로 지정된 Layout

 

- FlowLayout : Applet, Panel

- BorderLayout : Frame, Dialog

 

2. 지정된 기본 Layout을 변경하고 싶을 경우

 

- setLayout( new 레이아웃클래스() );

- setLayout( new FlowLayout() );

 

3. Layout을 사용하지 않고 직접 좌표를 지정할 경우

 

setLayout(null);
Button button = new Button("버튼");
button.setBounds(0,0,50,25); // x,y,width,height
add(button);

 


마치며

 

오늘은 GUI 프로그래밍의 개념에 대해서 포스팅해보았습니다!!

 

자바가 첫 언어 이신분들은 갑자기 늘어난 코딩양에 부담감을 느끼실 수 있지만 개념에 대해서 먼저 공부해보시고 GUI에 대한 감을 읽혀 보시길 바랍니다..!!

다음 포스팅은 GUI 실습을 통해 프로그래밍 이해하는 글을 작성하겠습니다. 

 

 

728x90

'[ JAVA ] > JAVA' 카테고리의 다른 글

[ Java ] I/O Stream  (2) 2023.01.10
[ Java ] GUI 프로그래밍 응용  (2) 2023.01.09
[ Java ] Thread  (0) 2023.01.05
[ Java ] 예외처리(Exception Handling)  (0) 2023.01.04
[ Java ] 내부 클래스(Inner Class)  (0) 2023.01.03