스윙(Swing)은 자바 플랫폼에서 그래픽 사용자 인터페이스(GUI)를 구현하기 위해 제공되는 위젯 툴킷이다. 자바 파운데이션 클래스(Java Foundation Classes, JFC)의 구성 요소 중 하나로, 1998년 Sun Microsystems가 JDK 1.2와 함께 처음 배포하였다.
개요
- 구성:
javax.swing패키지를 중심으로 구성되며, 버튼, 레이블, 텍스트 필드, 테이블, 트리, 다이얼로그 등 다양한 UI 컴포넌트를 제공한다. - 특징
- 경량 컴포넌트: AWT(Abstract Window Toolkit)와 달리 대부분의 컴포넌트가 순수 자바 코드로 구현되어 운영체제에 종속되지 않는다.
- MVC 아키텍처: 모델(Model), 뷰(View), 컨트롤러(Controller) 구조를 도입하여 데이터와 화면 표시를 분리한다.
- 플러그가능한 외관(Look and Feel): 기본적으로 “Metal” 외관을 제공하지만, 시스템 외관(Windows, macOS, GTK 등)이나 사용자 정의 외관을 적용할 수 있다.
- 이벤트 처리:
java.awt.event패키지와 연동된 이벤트 리스너 모델을 사용한다.
주요 컴포넌트
| 패키지 | 대표 클래스 | 설명 |
|---|---|---|
javax.swing |
JButton |
클릭 가능한 버튼 |
JLabel |
텍스트 혹은 이미지 표시 | |
JTextField |
단일 행 텍스트 입력 | |
JTextArea |
다중 행 텍스트 입력 | |
JTable |
표 형태 데이터 표시 | |
JTree |
계층 구조 데이터 표시 | |
JDialog |
모달/모달리스 대화상자 | |
JFrame |
최상위 윈도우 프레임 |
개발 및 유지보수
스윙은 초기 설계 이후 꾸준히 업데이트되어 왔으며, 현재는 Java SE 표준 라이브러리의 일부로 유지보수된다. 최신 JDK에서는 스윙을 대체하는 현대적인 UI 프레임워크(예: JavaFX)가 존재하지만, 레거시 애플리케이션 및 교육용 예제에서 여전히 널리 사용된다.
어원
‘Swing’이라는 명칭은 영어 단어 swing(흔들다, 휘두르다)에서 차용되었으며, “동적인 UI 요소를 자유롭게 흔들듯이 다룰 수 있다”는 의미를 내포한다는 해석이 일반적이다. 공식 문서에서 어원에 대한 명시적인 설명은 제공되지 않는다.
참고
- Sun Microsystems, The Java™ Platform, Standard Edition Documentation (JDK 1.2 이후)
- Oracle Corporation, Java SE API Specification –
javax.swing패키지
(본 내용은 공개된 공식 문서 및 신뢰할 수 있는 기술 자료에 근거하여 작성되었으며, 확인되지 않은 정보는 포함하지 않았다.)