성장 일기/쌍용교육센터 / / 2022. 12. 29. 17:54

1229/AWT, Swing

쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.

 

JFC (Java Foundation Class)는

Java에서 Windows Appication을 제작할 수 있는 클래스들(Component)이다.

AWT(Abstract Window Toolkit), Swing이 제공한다.

 

AWT는 무거운 컴포넌트이고 지원되는 컴포넌트의 수가 적고

컴포넌트가 미려하지 않다. 학습의 쉽지만 에러가 많다.

OS에 따라 다른 디자인을 제공하고 java.awt패키지에서 제공한다.

 

Swing는 가벼운 컴포넌트이고 지원되는 컴포넌트의 수가 많다.

컴포넌트가 미려하다, 학습이 어렵지만 에러가 적다.

OS에 관계없이 동일한 디자인을 제공하고 javax.swing 패키지에서 제공한다.

 

Java는 JVM(자바가상머신)에서 돌아간다. 

JVM는 하드웨어를 제어하는 OS위에서 돌아간다.

Java는 Windows용 실행파일(exe)을 만들 수 없고 JVM을 같이 배포해야한다.

 

AWT와 Swing은 그래픽 성능이 떨어지고 컴포넌트 프로그래밍이다.

컴포넌트는 최소의 기능을 제공하는 것이다.

Window Component, Cotainer Component, Component 3가지를 제공한다.

 

Component (기능 제공)는

기능을 제공하는 것이고

종류는 Button, Label, List, Choice, Menu, MenuBar, MenuItem,

Font, ButtonGroup 등이 있다.

 

Cotainer Component는 여러 기능 저장(배치)하고

일반 컴포넌트를 저장(배치)하고 윈도우 컴포넌트에 배치한다.

Panel, ScrollPane 등이 있다.

 

Window Component는 여러 기능 저장(배치) 이후 사용자에게 보여준다.

컨테이너 컴포넌트, 일반 컴포넌트를 저장(배치)하고

Window, Frame, Dialog, FileDialog 등이 있다.

 

AWT 코딩

//1. Window Component 상속 : 사용자에게 보여줄 수 있다.
public class TestWin extends Frame {

	public TestWin() {

//2. 생성자 안에서 컨테이너 컴포넌트나 일반 컴포넌트를 선언
		Button btn = new Button("버튼");

//3. 배치 관리자 

//4. 컴포넌트를 사용자에게 보여주기 위해서 윈도우 컴포넌트에 배치
		add(btn);

//5. 윈도우 크기 설정
		setSize(w, h);

//6. 사용자에게 보여주기
		setVisible(true);

//7. 윈도우 종료처리 : anonymous inner class를 사용
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent we) {
				dispose();
			}
		});
	}
}

 

Swing 코딩

//1. Window Component 상속 : 사용자에게 보여줄 수 있다.
public class TestWin extends JFrame {

	public TestWin() {

//2. 생성자 안에서 컨테이너 컴포넌트나 일반 컴포넌트를 선언
		Button btn = new JButton("버튼");
        
//3. 배치관리자        

//4. 컴포넌트를 사용자에게 보여주기 위해서 윈도우 컴포넌트에 배치
		add(btn);

//5. 윈도우 크기 설정
		setSize(w, h);

//6. 사용자에게 보여주기
		setVisible(true);

//7. 윈도우 종료처리 : anonymous inner class를 사용
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}

 

배치관리자(Layout Manager)는 컴포넌트를 어떻게 배치할 것인지 지원하는 기능이다.

자동배치관리자, 수동배치관리자로 구분하고

윈도우 컴포넌트와 컨테이너 컴포넌트에서 사용한다.

 

자동배치관리자는 컴포넌트가 정해진 위치에 배치되는 관리자이고

BorderLayout, FlowLayout, GridLayout, GridBagLayout, CardLayout가 있다.

java.awt.패키지에서 배치관리자를 제공한다.

배치관리자 적용하는 방법은 setLayout(new 배치관리자());이다.

 

BorderLayout(경계레이아웃)

Window Component의 기본 레이아웃이고 하나의 영역에는 하나의 컴포넌트가 배치된다.

배치되는 컴포넌트는 고유 크기가 무시되고 배치되는 곳의 크기에 맞게 변경된다.

JButton btn = new JButton("버튼");

//배치
setLayout(new BorderLayout()); //BorderLayout은 생략 가능

add("위치", 컴포넌트명);

add("North",btn);//문자열로 배치되는 위치를 설정

add(btn,"North");//문자열로 배치되는 위치를 설정 //오버로딩

add(btn, BorderLayout.NORTH);//BorderLayout의 상수(constant)를 사용하여 배치되는 위치를 설정

 

흐름레이아웃(FlowLayout)

Container Component의 기본 레이아웃(JPanel)이고 컴포넌트가 고유 크기를 가지고 배치된다.

영역에 여러 개의 컴포넌트가 배치되고 윈도우의 크기가 변경되면 컴포넌트의 위치가 변경된다.

JButton btn = new JButton("버튼");

//배치
setLayout(new FlowLayout());

add(컴포넌트명);

 

격자레이아웃 (GridLayout)

행과 열로 구성된 레이아웃이고 컴포넌트의 고유크기가 무시된다.

하나의 영역에 하나의 컴포넌트가 배치되고

모든 영역에 동일 크기로 컴포넌트가 배치된다.

배치되는 컴포넌트의 수가 설정한 행, 열의 수와 맞지 않으면

자동으로 행, 열이 변경된다.

//배치
setLayout(new GridLayout(행,열));

add(컴포넌트); //배치되는 컴포넌트는 왼쪽에서 오른쪽으로 배치된다.

 

배우고 느낀 점

AWT와 Swing은 실제로 사용이 되지 않는다고 배워야 할 점은

상속과 클래스, 메소드들의 관계 위주로 공부하는 방향으로 하라고 하셨다.

그래서 여러 API문서를 많이 보면서 어떠한 것들이 상속을 받고

메소드가 오버라이딩 되는 지를 보면서 공부를 하면 좋을 거 같다.

 

 

'성장 일기 > 쌍용교육센터' 카테고리의 다른 글

0103/Swing Component  (0) 2023.01.03
0102/Swing Component  (0) 2023.01.02
1228/Set, Map  (0) 2022.12.28
1227/Calendar, JCF  (0) 2022.12.27
1226/문자열, 날짜 클래스  (0) 2022.12.26
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유