java/이벤트 처리 4

Mouse와 MouseMotion 이벤트

마우스 이벤트(Mouse Event)는 사용자가 마우스 버튼을 누르거나 마우스를 움직일 때 발생한다. 사용자가 버튼을 누르거나 메뉴를 선택할 때는 마우스 이벤트를 처리할 필요가 없다(앞에서 학습한대로 이러한 경우는 액션 이벤트로 처리하면 된다). 하지만 사용자가 화면에 마우스로 그림을 그리게 하려면 마우스 이벤트를 처리하여야 한다. 마우스 버튼의 클릭을 처리하려면 MouseListener를 구현하여서 MouseEvent를 받으면 된다. 마우스가 이동할 때 마우스의 위치를 받으려면 MouseMotionListener를 구현하여서 MouseMotionEvent를 받아야 한다. 마우스에 대한 이벤트를 이렇게 분리하는 이유는 마우스의 움직임을 추적하는 것이 시스템의 오버헤드를 증가시키기 때문이다. MouseLi..

람다식

람다식(lambda expression)은 이름이 없는 메소드(함수)라고 할 수 있다. 우리가 람다식을 사용하는 이유는 간결함 때문이다. 람다식을 이용하면 메소드가 필요한 곳에 간단히 메소드를 보낼 수 있다. 특히 메소드가 딱 한번만 사용되고 메소드의 길이가 짧은 경우에 유용하다. 이전 버전의 자바에서는 메소드를 객체로 만들 수 있는 방법이 없었다. 하지만 JDK8부터는 함수를 객체로 만들 수 있다. import javax.swing*; import java.awt.event.*; public class MyFrame extends JFrame { private JButton button; private JLabel label; int counter = 0; public MyFrame() { this.s..

여러 가지 이벤트 처리 방법

1. 프레임 클래스가 이벤트를 처리 import javax.swing.*; import java.awt.event.*; public class event extends JFrame implemets ActionListener { private JButton button; private JLabel label; int counter = 0; //event 클래스는 JFrame클래스를 상속받고 동시에 ActionListener를 구현한다. 따라서 프레임이 버튼에서 발생하는 이벤트도 처리할 수 있다. public void actionPerformed(ActionEvent e) { counter ++; label.setText("현재의 카운터값 : "+ counter); } // event클래스 안에 actio..

이벤트란?

이벤트란? 일반적인 프로그램은 알고리즘에 따라서 문장들을 차례대로 실행하여 작업을 진행하지만, GUI 프로그램에서는 버튼과 같은 컴포넌트들을 화면에 배치한 후에, 사용자의 입력을 기다리고 있다가, 사용자가 특정 버튼을 누르면 작업이 진행된다. 이와같이 어떤 이벤트가 일어나는지를 감시하고 있다가 이벤트가 발생하면 적절한 처리를 해주는 프로그래밍 방식을 이벤트-구동 프로그래밍(event-driven programming)이라고 한다. 이벤트는 누가 처리하는가? 객체 지행 프로그램에서는 모든 작업을 객체(object)가 한다. 이벤트 처리도 객체가 한다. 이벤트를 처리하는 클래스를 정의하고 이 클래스의 객체 A를 생성한다면, 이 객체를 가지고 이벤트를 발생하는 객체 B(예를 들어 버튼)에 등록하면 된다. 차후..