IT (195) 썸네일형 리스트형 명품자바프로그래밍 10장, 자바의 이벤트 처리 요약 * AWT나 스윙 등 자바의 GUI 프로그래밍은 이벤트 기반 프로그래밍이다. * 이벤트 기반 프로그래밍은 이벤트의 발생에 의해 프로그램 실행 흐름이 결정되는 방식으로 프로그래밍 패러다임이다. * 이벤트는 키 입력, 마우스 클릭, 마우스 드래그 등의 사용자 액션이나, 센서 등 외부 장치로부터의 입력, 네트워크상의 다른 컴퓨터로부터의 데이터 송수신, 혹은 다른 스레드나 프로그램으로부터의 메시지 송수신 등에 의해 발생한다. * 이벤트 소스란 이벤트를 발생시킨 컴포넌트이다. * 이벤트 리스너란 이벤트 핸들러와 동일한 의미로 사용되며 이벤트를 처리하는 객체이다. * 자바에서 다양한 이벤트 리스너 인터페이스를 제공하며, 개발자는 이벤트 리스너를 만들기 위해 이벤트 리스너 인터페이스의 모든 멤버를 반드시 구현하여야 .. 자바 KeyEvent & KeyListener, focus, 명품자바프로그래밍10장 * Key 이벤트는 사용자가 키를 입력할 때 발생하는 이벤트이다. 모든 컴포넌트가 Key 이벤트를 받을 수 있다. 다만 조건이 하나 있다. 응용프로그램 내에 포커스(focus)를 가진 컴포넌트가 키 입력을 독점하기 때문에 현재 포커스를 가진 컴포넌트에만 key 이벤트가 발생한다. 만일 버튼을 누르기 위해 키를 입력하더라도 그 버튼이 포커스를 가지고 있지 않다면 Key 이벤트가 발생하지 않는다. 어떤 컴포넌트에게 키를 입력하고 한다면 키나 마우스 클릭을 통해 포커스를 그 컴포넌트에게 이동시켜야 한다. Component component; component.requestFocus(); // 응용 프로그램에서 강제로 임의의 컴포넌트에 포커스를 주기 위한 방법 * setFocusable() 메소드는 true를 .. 자바 어댑터 클래스(Adapter), 명품자바프로그래밍10장 * 리스너 인터페이스를 상속받아 이벤트 리스너를 구현할 때 리스너 인터페이스의 메소드를 모두 구현하여야 하는 부담이 있다. 이런 부담을 줄이기 위해 자바의 JDK는 이벤트 리스너 인터페이스를 미리 구현해 놓은 어댑터 클래스(Adapter)를 제공한다. 어댑터 클래스는 리스너 인터페이스의 모든 메소드가 단순 리턴되도록 구현되어 있다. 어탭터는 java.awt.event와 javax.swing.event 패키지에 구현되어 있다. class MouseAdapter implements MouseListener, MouseMotionListener, MouseWheelListener{ public void mousePressed(MouseEvent e) {} public void mouseReleased(Mous.. 자바 이벤트 리스너 작성 방법, 명품자바프로그래밍10장 * 이벤트 리스너 클래스를 작성하는 3가지 방법 1) 독립 클래스로 이벤트 리스너 작성 이벤트 리스너 클래스를 독립적으로 작성하는 방법으로서 가장 일반적이다. 그러나 이 방법은 MyActionListener가 다른 클래스의 멤버에 접근하기 쉽지 않은 단점이 있다. Action 이벤트 리스너 MyActionListener를 독립된 클래스로 작성 리스너에서 IndepListenerClass의 멤버에 대한 접근이 어려움 MyActionListener는 독립된 자바 소스 파일 (MyActionListener.java)로도 작성 가능 import javax.swing.*; import java.awt.event.*; import java.awt.*; public calss IndepClassListener ext.. 자바 이벤트 리스너, 명품자바프로그래밍10장 * 자바의 AWT와 스윙 패키지는 사용자가 이벤트 리스너를 작성할 수 있도록 이벤트 리스너 인터페이스(interface)를 제공한다. 자바는 사용자가 바로 사용할 수 있는 이벤트 리스너를 제공하지 않기 때문에, 스스로 필요한 이벤트 리스너를 작성하여야 한다. 리스너 인터페이스의 추상 메소드를 모두 구현하여 이벤트 리스너를 완성하여야 한다. interface ActionListener{ public void actionPerformed(ActionEvent e); // Action 이벤트 발생 처리 } interface MouseListener{ public void mousePressed(MouseEvent e);// 마우스 버튼이 눌러지는 순간 public void mouseReleased(MouseE.. 자바 이벤트 처리, 명품자바프로그래밍10장 * 이벤트 기반 프로그래밍은 이벤트의 발생에 의해 프로그램 실행 흐름이 결정되는 방식의 프로그래밍 패러다임이다. 이벤트는 키 입력, 마우스 클릭, 마우스 드래그 등 사용자의 액션이나 센서 등 외부 장치로부터의 입력, 네트워크를 통한 다른 컴퓨터로부터의 데이터 수신, 다른 스레드나 프로그램으로부터의 메시지 수신 등에 의해 발생한다. * 이벤트 기반 응용프로그램은 각 이벤트를 처리하는 이벤트 리스너(event listener) 혹은 이벤트 핸들러를 보유하며 이벤트가 발생할 때마다 해당 이벤트 리스너가 실행된다. 사용자가 스윙 기반의 GUI 응용프로그램상에서 버튼 클릭등의 GUI 컴포넌트에 입력 행위를 하면 이벤트가 발생한다. * new 버튼이 클릭되어 처리되는 과정을 통해 이벤트가 발생하는 과정 1) 사용자.. 자바 배치관리자 없는 컨테이너, 명품자바프로그래밍9장 * 모든 컨테이너는 배치관리자를 반드시 가지고, 배치관리자가 컴포넌트의 위치와 크기를 결정하도록 하는 것이 자바 GUI의 기본 정신이다. 배치관리자는 컴포넌트를 절대적인 위치에 배치하지 않고, 각 컴포넌트를 다른 컴포넌트의 위치에 대해 상대적인 위치에 배치한다. 그러므로 컨테이너의 크기가 변하면 컴포넌트의 위치도 함께 변한다. 배치관리자를 사용하면 컴포넌트의 위치에 대해서 신경 쓰지 않아도 되지만, 현실에서는 자바의 배치관리자들로는 구성하기 어려운 사용자 인터페이스를 만들어야 하는 경우가 종종 발생한다. ex.1) 컴포넌트의 크기나 위치를 개발자 임의로 결정하고자 하는 경우 ex.2) 게임 프로그램과 같이 시간이 마우스/키보드의 입력에 따라 컴포넌트의 위치와 크기가 수시로 변하는 경우 ex.3) 여러 컴.. 자바 GridLayout 배치관리자, 명품자바프로그램9장 * GridLayout은 컨테이너 공간을 사각형의 그리드(격자) 모양으로 분할하며 그리드의 각 셀에는 오직 하나의 컴포넌트를 배치하는 방법이다. GridLayout은 컨테이너에 추가되는 컴포넌트들을 순서대로 셀에 배치한다. container.setLayout(new GridLayout(4,3)); // 4x3 분할로 컴포넌트 배치 container.add(new JButton("1")); // 상단 왼쪽 첫 번째 셀에 버튼 배치 container.add(new JButton("2")); //그 옆 셀에 버튼 배치 * GridLayout의 생성자와 속성 생성자: GrindLayout(int rows, int cols, int hGap, int vGap) rows * cols의 그리드로 컨테이너 공간을 분할.. 이전 1 ··· 16 17 18 19 20 21 22 ··· 25 다음