자바/그림으로 배우는 JAVA

[Lesson 16 마지막 장] 그래픽 애플리케이션

hooooolly 2024. 8. 29. 19:43

1️⃣ GUI 애플리케이션의 기본

 

그래픽적인 외양을 가진 프로그램을 GUI(Graphical User Interface)라 부른다. 표준 자바 클래스 라이브러리에 포함되어 있는 java.awt 패키지의 AWT를 이용하면 가장 기본적인 GUI 애플리케이션 윈도를 만들 수 있다.

 

윈도를 만드는 방법으로는

1. Frame 클래스를 상속받은 클래스를 정의한다

2. 이 클래스의 서브 클래스 객체를 main 메서드 안에 작성한다

3. 프레임 클래스의 생성자를 호출해서 윈도 제목을 설정한다

4. setSize, setVisible 함수로 윈도의 크기를 설정하고 표시되도록 만든다

 

Lable 클래스의 객체를 생성해서 레이블에 문자를 표시하고 add 메서드를 이용해서 프레임에 컴포넌트 (윈도에 표시할 수 있는 부품)를 붙일 수 있다.

import java.awt.*;
import java.awt.event.*;

public class Main extends Frame {
	private Lable lable;
    
    public Main() {
    	super("윈도제목");
        lable = new Lable ("환영합니다");
        add(lable); //레이블 추가
        
        //색깔과 글꼴 설정
        lable.setForeground(Color.blue);
        lable.setFont(new Font("Serif", Font.BOLD, 20));
        
        addWindowListener(new SampleWindowListener());
        
        //윈도 크기 설정
        setSize(250, 200);
        setVisible(true):
    }
    
    public static void Main(String[] args) {
		Main main = new Main();
	}
}

 

마우스에 반응하여 작동하는 메커니즘을 이벤트 처리라고 한다. 마우스와 키보드 조작을 이벤트라고 부르는데 이러한 조작을 처리하는 구조를 가지고 있다. 이벤트를 받는 윈도 부품을 소스, 이벤트를 처리하는 부품을 리스너라고 부른다. 

//ActionListener 인터페이스를 구현한 클래스 선언
class EventEx implements ActionListener {

	public void actionPerformed (ActionEvent e) {
    	bt.setLable("안녕하세요"); //처리할 작업
    }
}

 

MouseListener 인터페이스를 구현하여 마우스의 움직임에 반응하는 애플리케이션을 만들 수 있다.

 

인터페이스를 구현할 때 모든 메서드를 정의하고 싶지 않을 때 어댑터 클래스(adapter class)를 사용해서 필요한 메서드만을 오버라이딩하는 클래스로 변환할 수 있어 코드를 간결한 코드를 작성할 수 있다. 또한, 익명 클래스를 사용하면 이벤트를 등록하는 메서드 안에 이벤트 처리를 작성할 수 있어 코드가 간결해진다. 마지막으로 람다식으로 사용해서도 이벤트 처리가 가능하다. 

bt.addMouseListener(new MouseAdapter() {
	public void mousePressed(MouseEvent e) {
   		
    }
});

//람다식
bt.addMOuseListener(new MouseAdapter (
	e -> {
    
    }
);