산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

Java Swing 튜토리얼: 견고한 GUI 애플리케이션 구축

Java에서 Swing이란?

Java Swing은 추상 윈도우 툴킷(AWT)을 확장한 정교한 플랫폼 독립적 GUI 툴킷입니다. 버튼, 테이블, 트리 등 풍부한 위젯 세트를 제공하여 개발자가 기본 컴포넌트를 재발명하지 않고도 세련된 데스크톱 애플리케이션을 만들 수 있게 합니다.

Java Foundation Classes(JFC)의 일부인 Swing은 AWT의 핵심 기능을 기반으로 하면서 경량의 커스터마이징 가능한 컴포넌트를 제공합니다. 그 결과 룩앤필 변경, 커스텀 페인팅, 데이터 바인딩 같은 고급 UI 기능을 지원하는 프레임워크가 탄생했습니다.

이 튜토리얼에서 마스터할 내용:

Java Swing 클래스 계층 다이어그램

Java Swing 튜토리얼: 견고한 GUI 애플리케이션 구축

모든 Swing 컴포넌트는 JComponent를 상속하며 컨테이너 클래스에 추가할 수 있습니다.

컨테이너 클래스란?

컨테이너 클래스는 모든 Swing UI의 중추로, 다른 컴포넌트를 담고 구성합니다. 최소한 하나의 컨테이너가 Swing 애플리케이션에 필요합니다. 세 가지 주요 컨테이너 유형:

  1. JPanel – 컴포넌트 그룹화용 경량 비윈도우 컨테이너
  2. JFrame – 타이틀 바, 테두리, 시스템 메뉴를 포함한 최상위 윈도우
  3. JDialog – 사용자 프롬프트용 모달/모달리스 팝업 윈도우

Java에서 GUI란?

Java의 그래픽 사용자 인터페이스(GUI)는 사용자가 애플리케이션과 상호작용할 수 있는 직관적인 시각적 계층을 제공합니다. 버튼, 라벨, 텍스트 필드 등 위젯을 조립하여 내부 로직을 추상화하는 매력적인 경험을 만듭니다.

Java에서 GUI 만들기 (단계별)

기본 윈도우를 구성하고 점진적으로 컴포넌트를 추가하는 실전 연습입니다.

1단계 – 새 Java 파일 생성

다음 코드를 에디터에 복사:

import javax.swing.*;
class GuiDemo {
    public static void main(String[] args) {
        JFrame frame = new JFrame("My First GUI");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 300);
        JButton button = new JButton("Press");
        frame.getContentPane().add(button);
        frame.setVisible(true);
    }
}

2단계 – 컴파일 및 실행

파일 저장 후 javac GuiDemo.java로 컴파일, java GuiDemo로 실행. 버튼 하나 있는 300×300 윈도우가 나타납니다.

3단계 – 다른 버튼 추가

두 번째 버튼 포함하도록 코드 수정:

import javax.swing.*;
class GuiDemo {
    public static void main(String[] args) {
        JFrame frame = new JFrame("My First GUI");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 300);
        JButton button1 = new JButton("Button 1");
        JButton button2 = new JButton("Button 2");
        frame.getContentPane().add(button1);
        frame.getContentPane().add(button2);
        frame.setVisible(true);
    }
}

4단계 – 레이아웃 이슈 관찰

이제 코드 실행하면 두 버튼이 겹쳐 보입니다. JFrame의 기본 레이아웃 매니저가 BorderLayout이라 영역 지정 없이 컴포넌트 추가 시 이전 것을 대체하기 때문입니다.

Java 레이아웃 매니저

레이아웃 매니저는 컨테이너 내 컴포넌트 배치를 제어합니다. 올바른 매니저 선택은 반응형, 유지보수하기 쉬운 GUI에 필수적입니다. 가장 자주 쓰이는 매니저:

BorderLayout

BorderLayout은 컨테이너를 NORTH, SOUTH, EAST, WEST, CENTER 다섯 영역으로 나눕니다. JFrame의 기본 매니저입니다.

Java Swing 튜토리얼: 견고한 GUI 애플리케이션 구축

FlowLayout

FlowLayout은 컴포넌트를 한 줄로 순차 배치하며 필요시 다음 줄로 넘깁니다. JPanel의 기본 매니저입니다.

Java Swing 튜토리얼: 견고한 GUI 애플리케이션 구축

GridBagLayout

GridBagLayout은 가장 유연하며, 컴포넌트가 여러 행/열을 차지하고 그리드 내 정확히 정렬되게 합니다.

Java Swing 튜토리얼: 견고한 GUI 애플리케이션 구축

예제: 간단한 채팅 윈도우 만들기

아래는 메뉴, 텍스트 영역, 컨트롤 패널을 결합한 응집력 있는 채팅 인터페이스를 보여주는 완전한 프로그램입니다.

Java Swing 튜토리얼: 견고한 GUI 애플리케이션 구축

해답 보기 전에 직접 코딩해 보세요.

// 메뉴, 텍스트 영역, 컨트롤을 포함한 완전한 Swing 애플리케이션
import javax.swing.*;
import java.awt.*;
class GuiDemo {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Chat Frame");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 400);
        // 메뉴 바
        JMenuBar menuBar = new JMenuBar();
        JMenu fileMenu = new JMenu("FILE");
        JMenu helpMenu = new JMenu("Help");
        menuBar.add(fileMenu);
        menuBar.add(helpMenu);
        JMenuItem openItem = new JMenuItem("Open");
        JMenuItem saveItem = new JMenuItem("Save as");
        fileMenu.add(openItem);
        fileMenu.add(saveItem);
        // 하단 패널 (FlowLayout 기본)
        JPanel panel = new JPanel();
        panel.add(new JLabel("Enter Text"));
        panel.add(new JTextField(10));
        panel.add(new JButton("Send"));
        panel.add(new JButton("Reset"));
        // 중앙 텍스트 영역
        JTextArea textArea = new JTextArea();
        // BorderLayout으로 프레임에 컴포넌트 추가
        frame.getContentPane().add(BorderLayout.SOUTH, panel);
        frame.getContentPane().add(BorderLayout.NORTH, menuBar);
        frame.getContentPane().add(BorderLayout.CENTER, textArea);
        frame.setVisible(true);
    }
}

java

  1. 마이크로소프트 Azure에 Java EE 애플리케이션 배포: 단계별 가이드
  2. VHDL 문자열 리스트 구현: 모범 사례와 예제
  3. Java 배열 튜토리얼: 선언, 생성, 초기화와 예제 코드
  4. Java 객체 배열 생성하기: 단계별 완벽 가이드
  5. Java 난수 생성: Random 클래스와 Math.random 실전 가이드
  6. Java BufferedReader로 파일 읽기: 실전 가이드와 예제
  7. 자바에서 char를 String으로 변환하기: 실전 예제와 모범 사례
  8. 자바에서 재귀를 이용해 문자열 뒤집기: 단계별 가이드
  9. Java 10: 클래스 데이터 공유(CDS)로 성능 향상
  10. C#으로 PLCnext 콘솔 애플리케이션 개발하기: 초보자 가이드