Swing이란?
- Java에서 GUI를 만들어주는 대표적인 툴.
- 여러 플랫폼의 룩앤필을 제공
- 버튼, 체크박스, 라벨 뿐만 아니라 tabbed panel, scroll pnae, tress, 표, 리스트 등 다양한 컴포넌트를 제공
AWT와 Swing의 차이점
Java AWT | Java Swing | |
플랫폼과의 관계 | 플랫폼과 무관(독립적) | 플랫폼에 종속적 |
컴포넌트 | 무겁다. 종류 적다. | 가볍다. 종류가 다양하다. |
룩앤필 | pluggable 룩앤필 제공X | pluggable 룩앤필 제공O |
MVC | MVC 패턴 따르지X | MVC 패턴을 따른다. |
※ MVC 패턴 : Model View Controller
- Model : 데이터를 가져와 어떤 작업을 처리하거나 처리한 작업을 저장.
- View : 데이터를 보여준다.
- Controller : 뷰와 모델 사이의 흐름을 제어한다.
Swing 클래스
- 클래스명이 J로 시작한다. ex) JFrame, JLabel, JTable, ..
- 스윙 컴포넌트는 2가지 유형이 존재 : Container, JComponent
┗ Container : AWT의 Contianer(java.awt.Container)를 상속받음
┗ JComponent : 스윙 컴포넌트의 공통적인 속성을 구현.
- Swing class의 hierearchy는 아래 이미지와 같다.
컨테이너와 컴포넌트
1. 컨테이너
- 컨테이너 클래스는 위에 다른 컴포넌트들을 포함할 수 있는 것을 말한다.
- 그러므로 GUI를 만들 때, 최소 하나 이상의 컨테이너 오브젝트가 필요하다.
┗ java.awt.Container를 상속받아야 함.
- 최상위 컨테이너 : 다른 컨테이너에 속하지 않고도 독립적으로 존재하고 화면에 출력 가능함.
ex) Jframe, JDialog, JApplet.
- 컨테이너의 객체는 컨테이너에 포함될 수 있는 컴포넌트들이다.
┗ AWT 컨테이너 : Window, Frame, Dialog, Panel, Applet (위의 이미지 참고)
┗ Swing 컨테이너 : JWindow, JFrame, JDialog, JPanel, JApplet (위의 이미지 참고)
1) Panel : 순수한 컨테이너이며, 이 자체로는 윈도우창이 아니다. 패널의 목적은 컴포넌트들을 윈도우에 올리도록 조직화하는 것이다.
2) Frame : 완벽하게 작동하는 윈도우창이다. (타이틀, 아이콘 포함)
3) Dialog : 팝업같은 거라고 생각하면 된다. 메시지가 팝업되면서 나타나는 창이다. Frame과 마찬가지로 완벽하게 작동하는 윈도우창이다.
2. 컴포넌트
- 컴포넌트 : 컨테이너에 포함되어야지만 비로소 화면에 출력될 수 있는 GUI 객체.
┗ 모든 GUI 컴포넌트의 최상위 클래스 : java.awt.Component
┗ Swing 컴포넌트의 최상위 클래스 : javax.swing.JComponent
Swing의 JComponent
- 스윙의 JComponent는 아래와 같은 것들이 있다.
- 아래의 11가지 컴포넌트만 쓸 줄 알면 대충 뭔가를 만들 수 있는 것 같다. (주관적인 생각)
┗ JPanel, JScrollPane, JTabbedPane, JOptionPane
┗ JLabel
┗ JTextField, JTextArea, JTextPane
┗ JButton, JCheckBox, JRadioButton
Swing GUI 프로그램 만드는 법
1. 프레임을 만든다.
2. 프레임에 스윙 컴포넌트를 붙인다.
3. main함수를 만든다.
좋은 참고 싸이트들
https://docs.oracle.com/javase/tutorial/uiswing/components/toplevel.html
https://www.ntu.edu.sg/home/ehchua/programming/java/J4a_GUI_2.html
'Programming > Back-end(Java, JSP)' 카테고리의 다른 글
[Java] Annotation (0) | 2020.04.18 |
---|---|
[JSP] JSTL 용법 (0) | 2020.04.05 |
[JSP] EL(Expression Language) 용법, 연산자 (0) | 2020.04.05 |
VO(DTO), DAO, Service 용어 설명 (0) | 2020.03.18 |
[JSP] 내장객체 (기본객체, Implicit Objects) (0) | 2020.03.12 |
[Java] 생활코딩 Java1 Method 강의 정리 (0) | 2020.01.20 |
[Java] 개발환경 구축 - 2) 이클립스 설치 (0) | 2019.12.02 |
[Java] 개발환경 구축 - 1) 자바 컴파일러 설치 (0) | 2019.12.02 |