'KeyEvent'에 해당되는 글 1건
- 2008.08.28 Part 6. AWT - IV 입력관련 이벤트 처리 5
2008. 8. 28. 14:18
Part 6. AWT - IV 입력관련 이벤트 처리
2008. 8. 28. 14:18 in 수업/자바2JDK입문
입력 관련 이벤트 처리에서 인터페이스의 구현과 Adapter 클래스의 구현을 알아보도록 합니다. 아래는 샘플 코드입니다.
입력은 KeyEvent와 MouseEvent로 나누어 볼 수 있습니다.
===================================================================================
package pack02;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
class FrameTest extends Frame{
FrameTest(){
setSize(300,200);
setVisible(true);
addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent arg0) {
dispose();
System.exit(0);
}
}
);
}
}
public class Ex01 {
public static void main(String[] args) {
new FrameTest();
}
}
===================================================================================
KeyListener 인터페이스를 통한 구현
인터페이스를 implements 하므로 인터페이스의 모든 추상메소드를 오버라이딩 해야 한다.
===================================================================================
package pack01;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
// 이벤트 처리를 위해서 이벤트 소스를 포함한 클래스를 이벤트 처리 객체로 만들어 준다.
class FrameTest extends Frame implements KeyListener{
public void keyPressed(KeyEvent e) {
ta.append(e.getKeyChar()+"가 눌림\n");
//ta.append((String)e.getKeyChar());
// 소스가 에러를 일으키는 이유 : 기본형 char를 String로 캐스팅 하지 못한다.
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
TextField txt; // 이벤트 소스
TextArea ta;
FrameTest(){
add(txt=new TextField(20), BorderLayout.NORTH);
// 이벤트 소스와 이벤트 처리 객체를 연결
txt.addKeyListener(this);
add(ta=new TextArea(5,2), BorderLayout.CENTER);
setSize(300,200);
setVisible(true);
addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent arg0) {
dispose();
System.exit(0);
}
}
);
}
}
public class Ex01 {
public static void main(String[] args) {
new FrameTest();
}
}
===================================================================================
KeyAdapter 클래스를 통한 구현
어댑터 클래스를 내부 무명객체로 생성하여 이벤트 처리 하기
클래스를 불러오므로 원하는 메소드만 오버라이딩 하면 된다.
===================================================================================
package pack02;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
class FrameTest extends Frame{
TextField txt;
TextArea ta;
FrameTest(){
add(txt=new TextField(20), BorderLayout.NORTH);
// 객체 생성하면서 클래스 설계 - 무명 클래스
// 어댑터 클래스를 내부 무명객체로 생성하여 이벤트 처리해보기
txt.addKeyListener(
new KeyAdapter(){
@Override
public void keyPressed(KeyEvent e) {
ta.append(e.getKeyChar()+"가 눌림\n");
}
}
);
add(ta=new TextArea(5,2), BorderLayout.CENTER);
setSize(300,200);
setVisible(true);
addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent arg0) {
dispose();
System.exit(0);
}
}
);
}
}
public class Ex01 {
public static void main(String[] args) {
new FrameTest();
}
}
===================================================================================
MouseListener 인터페이스를 통한 구형 - 마우스를 클릭하면 점 이동하기
===================================================================================
package pack03;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
class FrameTest extends Frame implements MouseListener{
public void mouseClicked(MouseEvent e) {
x=e.getX(); y=e.getY();
repaint();
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
int x=10, y=100;
@Override
// 이벤트에 의해서 호출되는 메서드
public void paint(Graphics g) {
g.setColor(new Color(250,0,250));
g.fillOval(x, y, 20, 20);
}
FrameTest(){
addMouseListener(this);
setSize(300,200);
setVisible(true);
addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent arg0) {
dispose();
System.exit(0);
}
}
);
}
}
public class Ex01 {
public static void main(String[] args) {
new FrameTest();
}
}
===================================================================================
MouseAdapter 클래스를 통한 구형 - 마우스를 클릭하면 점 이동하기
===================================================================================
package pack04;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
class FrameTest extends Frame{
int x=10, y=100;
@Override
public void paint(Graphics g) {
g.setColor(new Color(250,0,250));
g.fillOval(x, y, 20, 20);
}
FrameTest(){
// 어댑터 클래스를 내부 무명객체로 생성하여 이벤트 처리해보기
addMouseListener(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent e) {
x=e.getX(); y=e.getY();
repaint();
}
}
);
setSize(300,200);
setVisible(true);
addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent arg0) {
dispose();
System.exit(0);
}
}
);
}
}
public class Ex01 {
public static void main(String[] args) {
new FrameTest();
}
}
===================================================================================
MouseMotionListener 인터페이스를 통한 구현 - 드래그 시, 점 이동
===================================================================================
package pack05;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
class FrameTest extends Frame implements MouseMotionListener{
public void mouseDragged(MouseEvent e) {
x=e.getX(); y=e.getY();
repaint();
}
public void mouseMoved(MouseEvent e) {
}
int x=10, y=50;
@Override
public void paint(Graphics g) {
addMouseMotionListener(this);
g.setColor(Color.RED);
g.fillOval(x,y,20,20);
}
FrameTest(){
setSize(300,200);
setVisible(true);
addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent arg0) {
dispose();
System.exit(0);
}
}
);
}
}
public class Ex01 {
public static void main(String[] args) {
new FrameTest();
}
}
===================================================================================
MouseMotionAdapter 클래스를 통한 구현 - 드래그 시, 점 이동
===================================================================================
package pack06;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
class FrameTest extends Frame{
int x=10, y=50;
@Override
public void paint(Graphics g) {
g.setColor(Color.RED);
g.fillOval(x,y,20,20);
}
FrameTest(){
// 어댑터 클래스를 내부 무명객체로 생성하여 이벤트 처리해보기
addMouseMotionListener(new MouseMotionAdapter(){
@Override
public void mouseDragged(MouseEvent e) {
x=e.getX(); y=e.getY();
repaint();
}
}
);
setSize(300,200);
setVisible(true);
addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent arg0) {
dispose();
System.exit(0);
}
}
);
}
}
public class Ex01 {
public static void main(String[] args) {
new FrameTest();
}
}
===================================================================================
입력은 KeyEvent와 MouseEvent로 나누어 볼 수 있습니다.
===================================================================================
package pack02;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
class FrameTest extends Frame{
FrameTest(){
setSize(300,200);
setVisible(true);
addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent arg0) {
dispose();
System.exit(0);
}
}
);
}
}
public class Ex01 {
public static void main(String[] args) {
new FrameTest();
}
}
===================================================================================
KeyListener 인터페이스를 통한 구현
인터페이스를 implements 하므로 인터페이스의 모든 추상메소드를 오버라이딩 해야 한다.
===================================================================================
package pack01;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
// 이벤트 처리를 위해서 이벤트 소스를 포함한 클래스를 이벤트 처리 객체로 만들어 준다.
class FrameTest extends Frame implements KeyListener{
public void keyPressed(KeyEvent e) {
ta.append(e.getKeyChar()+"가 눌림\n");
//ta.append((String)e.getKeyChar());
// 소스가 에러를 일으키는 이유 : 기본형 char를 String로 캐스팅 하지 못한다.
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
TextField txt; // 이벤트 소스
TextArea ta;
FrameTest(){
add(txt=new TextField(20), BorderLayout.NORTH);
// 이벤트 소스와 이벤트 처리 객체를 연결
txt.addKeyListener(this);
add(ta=new TextArea(5,2), BorderLayout.CENTER);
setSize(300,200);
setVisible(true);
addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent arg0) {
dispose();
System.exit(0);
}
}
);
}
}
public class Ex01 {
public static void main(String[] args) {
new FrameTest();
}
}
===================================================================================
KeyAdapter 클래스를 통한 구현
어댑터 클래스를 내부 무명객체로 생성하여 이벤트 처리 하기
클래스를 불러오므로 원하는 메소드만 오버라이딩 하면 된다.
===================================================================================
package pack02;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
class FrameTest extends Frame{
TextField txt;
TextArea ta;
FrameTest(){
add(txt=new TextField(20), BorderLayout.NORTH);
// 객체 생성하면서 클래스 설계 - 무명 클래스
// 어댑터 클래스를 내부 무명객체로 생성하여 이벤트 처리해보기
txt.addKeyListener(
new KeyAdapter(){
@Override
public void keyPressed(KeyEvent e) {
ta.append(e.getKeyChar()+"가 눌림\n");
}
}
);
add(ta=new TextArea(5,2), BorderLayout.CENTER);
setSize(300,200);
setVisible(true);
addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent arg0) {
dispose();
System.exit(0);
}
}
);
}
}
public class Ex01 {
public static void main(String[] args) {
new FrameTest();
}
}
===================================================================================
MouseListener 인터페이스를 통한 구형 - 마우스를 클릭하면 점 이동하기
===================================================================================
package pack03;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
class FrameTest extends Frame implements MouseListener{
public void mouseClicked(MouseEvent e) {
x=e.getX(); y=e.getY();
repaint();
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
int x=10, y=100;
@Override
// 이벤트에 의해서 호출되는 메서드
public void paint(Graphics g) {
g.setColor(new Color(250,0,250));
g.fillOval(x, y, 20, 20);
}
FrameTest(){
addMouseListener(this);
setSize(300,200);
setVisible(true);
addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent arg0) {
dispose();
System.exit(0);
}
}
);
}
}
public class Ex01 {
public static void main(String[] args) {
new FrameTest();
}
}
===================================================================================
MouseAdapter 클래스를 통한 구형 - 마우스를 클릭하면 점 이동하기
===================================================================================
package pack04;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
class FrameTest extends Frame{
int x=10, y=100;
@Override
public void paint(Graphics g) {
g.setColor(new Color(250,0,250));
g.fillOval(x, y, 20, 20);
}
FrameTest(){
// 어댑터 클래스를 내부 무명객체로 생성하여 이벤트 처리해보기
addMouseListener(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent e) {
x=e.getX(); y=e.getY();
repaint();
}
}
);
setSize(300,200);
setVisible(true);
addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent arg0) {
dispose();
System.exit(0);
}
}
);
}
}
public class Ex01 {
public static void main(String[] args) {
new FrameTest();
}
}
===================================================================================
MouseMotionListener 인터페이스를 통한 구현 - 드래그 시, 점 이동
===================================================================================
package pack05;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
class FrameTest extends Frame implements MouseMotionListener{
public void mouseDragged(MouseEvent e) {
x=e.getX(); y=e.getY();
repaint();
}
public void mouseMoved(MouseEvent e) {
}
int x=10, y=50;
@Override
public void paint(Graphics g) {
addMouseMotionListener(this);
g.setColor(Color.RED);
g.fillOval(x,y,20,20);
}
FrameTest(){
setSize(300,200);
setVisible(true);
addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent arg0) {
dispose();
System.exit(0);
}
}
);
}
}
public class Ex01 {
public static void main(String[] args) {
new FrameTest();
}
}
===================================================================================
MouseMotionAdapter 클래스를 통한 구현 - 드래그 시, 점 이동
===================================================================================
package pack06;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
class FrameTest extends Frame{
int x=10, y=50;
@Override
public void paint(Graphics g) {
g.setColor(Color.RED);
g.fillOval(x,y,20,20);
}
FrameTest(){
// 어댑터 클래스를 내부 무명객체로 생성하여 이벤트 처리해보기
addMouseMotionListener(new MouseMotionAdapter(){
@Override
public void mouseDragged(MouseEvent e) {
x=e.getX(); y=e.getY();
repaint();
}
}
);
setSize(300,200);
setVisible(true);
addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent arg0) {
dispose();
System.exit(0);
}
}
);
}
}
public class Ex01 {
public static void main(String[] args) {
new FrameTest();
}
}
===================================================================================
'수업 > 자바2JDK입문' 카테고리의 다른 글
[기타] 성적 처리 프로그램 - 포스팅 중 (0) | 2008.09.11 |
---|---|
Part 6. AWT - III 윈도우창에 메뉴바와 메뉴 만들기 (0) | 2008.08.27 |
Part 6. AWT - II 컴포넌트의 이벤트 처리(2) (0) | 2008.08.27 |
Part 6. AWT - II 컴포넌트의 이벤트 처리(1) (0) | 2008.08.23 |
Part 6. AWT - I AWT를 이용한 GUI 작성 (0) | 2008.08.21 |