![post-thumbnail](https://velog.velcdn.com/images/estar0622/post/5edac860-a826-4c46-baf0-0996bb2f0b94/image.png)
What is Swing
- JAVA Swing는 JDK에 포함되어 있는 GUI 개발용 라이브러리로서 다양한 컴포넌트와 이벤트 처리 구현이 가능하게하여 시각적으로 이해하기 쉽게 정보를 제공한다.
- 사용자는 마우스나 키보드를 통해 쉽게 입력한다는 점에서 유리함이 있다.
- 강력한 GUI 컴포넌트를 제공하고 프로그래밍이 쉽다.
- AWT와 Swing 패키지가 있다.
Swing의 주요 특징
- 플랫폼 독립성: Swing은 순수 Java로 작성되어 있어 어떤 운영체제에서도 동일하게 동작합니다.
- 풍부한 컴포넌트: Swing은 다양한 기본 컴포넌트를 제공하며, 복잡한 UI 요소들도 포함되어 있습니다. 예를 들어, JTree, JTable, JTabbedPane 등.
- 플러그 가능 Look and Feel: Swing은 다양한 Look and Feel을 지원하여, 운영체제의 기본 테마뿐만 아니라 커스텀 테마도 적용할 수 있습니다.
- 이벤트 기반 프로그래밍: 사용자의 행동(버튼 클릭, 키 입력 등)에 따라 반응하는 이벤트 기반 프로그래밍을 지원합니다.
- 더 나은 제어와 유연성: AWT보다 더 많은 기능과 유연성을 제공하여, 개발자가 UI를 더 세밀하게 제어할 수 있게 합니다.
주요 컴포넌트 및 클래스
앞에 J를 붙여 만든다.
- JFrame: 애플리케이션의 기본 창을 나타내는 클래스입니다.
- JPanel: 다른 컴포넌트를 그룹화할 수 있는 일반적인 컨테이너입니다.
- JScrollPane: 스크롤 가능한 영역을 제공하여 큰 내용을 작은 공간에 표시할 수 있습니다.
- JMenuBar: 메뉴 바를 포함할 수 있는 컨테이너입니다.
- JToolBar: 툴바를 포함할 수 있는 컨테이너입니다.
이상 컨테이너 요소
- JButton: 클릭 가능한 버튼을 나타냅니다.
- JLabel: 텍스트를 표시하는 레이블을 나타냅니다.
- JTextField: 한 줄의 텍스트 입력을 받을 수 있는 필드입니다.
- JTextArea: 여러 줄의 텍스트를 입력할 수 있는 영역입니다.
- JCheckBox: 선택할 수 있는 체크박스를 나타냅니다.
- JRadioButton: 하나 이상의 옵션 중에서 선택할 수 있는 라디오 버튼을 나타냅니다.
- JComboBox: 드롭다운 목록을 나타냅니다.
- JMenu: 메뉴 바를 나타내며, 여러 JMenuItem을 포함할 수 있습니다.
이상 컴포넌트 요소
그럼 컨테이너와 컴포넌트가 뭐지?
컨테이너
- 다른 GUI 컴포넌트를 포함할 수 있는 컴포넌트
- java.awt.Container 상속
- 다른 컨테이너에 포함될 수 있음
컴포넌트
- 컨테이너에 포함되어 화면에 출력될 수 있는 것
- 모든 컴포넌트는 java.awt.Component를 상속받음
![](https://velog.velcdn.com/images/estar0622/post/08b9b31e-8af9-4889-999d-488dec1bb8eb/image.png)
Swing GUI 프로그램 만들기
패키지 사용을 위해서 import 해야함
- java.awt.GridLayout: AWT(Abstract Window Toolkit)에서 제공하는 레이아웃 매니저 클래스. 컴포넌트들을 격자 형태로 배치할 때 사용
- javax.swing.JButton: Swing에서 제공하는 버튼 클래스. 클릭 가능한 버튼을 만들 때 사용.
- javax.swing.JDialog: Swing에서 제공하는 대화 상자 클래스. 사용자와 상호 작용할 수 있는 모달 또는 비모달 대화 상자를 만들 때 사용.
- javax.swing.JFrame: Swing에서 제공하는 최상위 컨테이너 클래스. 주로 애플리케이션의 주 창을 만들 때 사용.
- javax.swing.JLabel: Swing에서 제공하는 레이블 클래스. 텍스트나 이미지를 표시할 때 사용.
- javax.swing.JTextField: Swing에서 제공하는 한 줄짜리 텍스트 입력 필드 클래스. 사용자가 텍스트를 입력할 수 있는 필드를 만들 때 사용.
- javax.swing.table.DefaultTableModel: Swing에서 제공하는 테이블 모델 클래스. JTable에 데이터를 제공하고, 테이블 데이터를 관리하는 데 사용.
JFrame 기본구성
![](https://velog.velcdn.com/images/estar0622/post/610fe275-f614-4af7-bce6-cdfcd1eaa96d/image.png)
생성메소드
- setTitle(String title) ->제목설정
- setSize(int width, int height) -> 창의 크기
- setLocation(int x, int y) -> 창의 위치
- setDefaultCloseOperation(int 상수) -> 종료에 대한 기능
- setVisible(boolean b) -> 가시성
- setResizable(boolean b) -> 크기 조정 여부