Framework & Library/Swing

[Swing] 자바 GUI 스윙 (Swing)

굠민 2024. 9. 3. 14:35

GUI란?

[OS / Linux] GUI와 CLI (tistory.com)

 

[OS / Linux] GUI와 CLI

📌GUI (Graphical User Interface) : 화면상에 보이는 아이콘, 창, 메뉴 등을 마우스 등으로 클릭하여 컴퓨터에 명령을 내리는 인터페이스아이콘, 버튼, 메뉴, 창 등의 시각적 요소가 포함되며, 사용자는

ikmin.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.*;
  • 프레임 만들기
    • JFrame 객체를 직접 생성하는 방법 
      JFrame jFrame = new JFrame("Frame Test");
      : JFrame 클래스 생성자의 매개변수는 프레임의 제목이다.
    • 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 객체를 생성
              // 기능 구현 구역 //
          }
      }
       
  • 프레임에 스윙 컴포넌트 붙이기
    : 프레임은 응용 프로그램을 구성하는 틀이다. 컴포넌트를 사용할 경우, 이 틀에 컴포넌트를 추가하면 된다. 

 

 

 

배치(Layout)
  • 컨테이너에 부착되는 컴포넌트들의 크기와 위치는 컨테이너 내부에 있는 배치 관리자에 의해 결정되며, 배치 관리자는 컨테이너에 컴포넌트가 부착되는 시점에 컴포넌트의 위치와 크기를 결정한다. 
  • 각 컨테이너마다 특별히 설정하지 않았을 경우 존재하는 디폴트 레이아웃이 존재한다.
컨테이너 default 배치관리자
window, Jwindow BorderLayout
Frame, JFrame BorderLayout
Dialog, JDialog BorderLayout
Panel, JPanel FlowLayout
Applet, JApplet FlowLayout