GUI란?
[OS / Linux] GUI와 CLI (tistory.com)
[ ↑ GUI 개념 정리 글]
자바의 UI 툴킷(라이브러리)은 Swing과 AWT가 있다.
Swing이란?
Java 프로그래밍 언어에서 GUI를 만들기 위해 사용되는 라이브러리로, 자바로 만든 프로그램에 버튼, 텍스트 필드, 메뉴와 같은 사용자 인터페이스 요소를 추가할 수 있게 해주는 도구이다.
- 독립적인 플랫폼 : 어떤 운영체제에서든 동일하게 동작하는 UI를 만들 수 있다.
- 다양한 컴포넌트 : 버튼, 텍스트 상자, 체크박스, 메뉴 등 다양한 UI 요소를 제공한다.
- 커스터마이징 : 기본 제공 컴포넌트를 다양한 방식으로 꾸미고 변경할 수 있다.
- 이벤트 처리 : 사용자의 행동(클릭, 입력 등)에 따라 프로그램을 쉽게 설정할 수 있다.
< Swing의 컴포넌트>
: 스윙 컴포넌트의 이름은 (AWT 컴포넌트와 구분하기 위해) 모두 대문자 J로 시작한다.
- JFrame : 프로그램의 기본 창을 만드는 데 사용되며, 모든 UI 컴포넌트는 JFrame 위에 배치된다.
- JPanel : 컴포넌트를 그룹화하거나 레이아웃을 구성하는 데 사용되는 컨테이너
- JButton : 사용자가 클릭할 수 있는 버튼을 만든다.
- JLabel : 텍스트나 이미지를 화면에 표시하는 데 사용된다.
- JTextField : 사용자가 텍스트를 입력할 수 있는 상자를 만든다.
📌 컨테이너 : 다른 컴포넌트들을 내부에 넣을 수 있는 컴포넌트
- 기본 컴포넌트 : JLabel, JButton, JCheckbox 등
- 컨테이너 컴포넌트 : 다른 컴포넌트를 안에 포함할 수 있는 컴포넌트 : JFrame, JDialog, JPanel 등
- 최상위 컨테이너 : 절대 다른 컨테이너 안에 포함될 수 없는 컨테이너
(JFrame, JDialog, JApplet ) - 일반 컨테이너 : 다른 컨테이너 안에 포함될 수 있는 컨테이너
(JPanel, JScrollPane 등)
- 최상위 컨테이너 : 절대 다른 컨테이너 안에 포함될 수 없는 컨테이너
*GUI 작성 절차 : 1. 최상위 컨테이너 생성 / 2. 애플리케이션에 필요한 컴포넌트 생성 후 컨테이너에 추가
<Swing 프로그램 만드는 과정>
- 확장 패키지 선언
- 스윙 클래스들은 javax.swing 패키지 안에 들어있기에, swing 사용 시 무조건 javax.swing 패키지를 포함하여야 한다.
import javax.swing.*;
- 스윙 클래스들은 javax.swing 패키지 안에 들어있기에, swing 사용 시 무조건 javax.swing 패키지를 포함하여야 한다.
- 프레임 만들기
- JFrame 객체를 직접 생성하는 방법
: JFrame 클래스 생성자의 매개변수는 프레임의 제목이다.JFrame jFrame = new JFrame("Frame Test");
- JFrame 클래스를 상속받는 방법 (선호 방법)
class MyFrame extends JFrame{ //JFrame을 상속받은 MyFrame을 정의한다. // 생성자에서 각종 초기화를 한다. public Myframe(){ setSize(300,200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 프레임은 사용자가 close 버튼을 누르지 않는 한 종료되지 않는다. setTitle("MyFrame"); setVisible(true); } } public class MyFrameTest{ public static void main(String[] args) { Myframe f = new MyFrame(); // MyFrame 객체를 생성 // 기능 구현 구역 // } }
- JFrame 객체를 직접 생성하는 방법
- 프레임에 스윙 컴포넌트 붙이기
: 프레임은 응용 프로그램을 구성하는 틀이다. 컴포넌트를 사용할 경우, 이 틀에 컴포넌트를 추가하면 된다.
배치(Layout)
- 컨테이너에 부착되는 컴포넌트들의 크기와 위치는 컨테이너 내부에 있는 배치 관리자에 의해 결정되며, 배치 관리자는 컨테이너에 컴포넌트가 부착되는 시점에 컴포넌트의 위치와 크기를 결정한다.
- 각 컨테이너마다 특별히 설정하지 않았을 경우 존재하는 디폴트 레이아웃이 존재한다.
컨테이너 | default 배치관리자 |
window, Jwindow | BorderLayout |
Frame, JFrame | BorderLayout |
Dialog, JDialog | BorderLayout |
Panel, JPanel | FlowLayout |
Applet, JApplet | FlowLayout |
'Framework & Library > Swing' 카테고리의 다른 글
[Swing] 사용자 정의 효과음 메서드 (5) | 2024.09.18 |
---|---|
[Swing] JOptionPane 팝업 창 클래스 (0) | 2024.09.17 |
[Swing] 이벤트 처리 (Event Handling) (0) | 2024.09.05 |
[Swing] 배치 관리자 (0) | 2024.09.05 |
[Swing] 기초 컴포넌트의 생성자와 메서드 (1) | 2024.09.05 |