시나리오 코드 1
package ch06;
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JTextArea;
/**
* 키 이벤트 리스너 사용해보기
*/
public class MyKeyEvent extends JFrame {
private JTextArea textArea;
public MyKeyEvent() {
initData();
setInitLayout();
addEventListener();
}
private void initData() {
setSize(500, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false); // 프레임 사이즈 조절 불가
textArea = new JTextArea();
}
private void setInitLayout() {
// 좌표 기준으로 셋팅하고 싶다면 null
setLayout(new BorderLayout());
add(textArea);
setVisible(true);
}
private void addEventListener() {}
// 코드 테스트
public static void main(String[] args) {
new MyKeyEvent();
}
}
연습문제
(제어문을 활용해서 방향키 위 아래 왼쪽 오른쪽이 눌렀다가 때면 // 콘솔창에 한글로 위 아래 왼쪽 오른쪽글자를 표기하시오)
package ch06;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JTextArea;
/**
* 키 이벤트 리스너 사용해보기
*/
public class MyKeyEvent extends JFrame implements KeyListener {
private JTextArea textArea;
// private final int UP = 38;
public MyKeyEvent() {
initData();
setInitLayout();
addEventLitener();
}
private void initData() {
setSize(500, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false); // 프레임 사이즈 조절 불가
textArea = new JTextArea();
}
private void setInitLayout() {
// 좌표 기준으로 셋팅하고 싶다면 null
setLayout(new BorderLayout());
add(textArea);
setVisible(true);
}
private void addEventLitener() {
// textArea 위에서 사용자가 키보드를 누르면 감지해서
// 나에게(코드기준) 알려줘
textArea.addKeyListener(this);
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
// 응답 받고 싶다면 2
// System.out.println("keyPressed : " + e.getKeyCode());
}
@Override
public void keyReleased(KeyEvent e) {
// 문제 1
// 제어문을 활용해서 방향키 위 아래 왼쪽 오른쪽이 눌렀다가 때면
// 콘솔창에 한글로 위 아래 왼쪽 오른쪽글자를 표기하시오
if (e.getKeyCode() == KeyEvent.VK_LEFT) {
System.out.println("왼쪽");
} else if (e.getKeyCode() == KeyEvent.VK_UP) {
System.out.println("위");
} else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
System.out.println("오른쪽");
} else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
System.out.println("아래");
}
}
}
package ch06;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class MiniGame1 extends JFrame {
private JLabel jPlayer;
public MiniGame1() {
initData();
setInitLayout();
addEventListener();
}
private void initData() {
setSize(500, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jPlayer = new JLabel("플레이어1");
}
private void setInitLayout() {
// 좌표 기반으로 배치관리자 변경
setLayout(null);
add(jPlayer);
setVisible(true);
}
private void addEventListener() {}
// 코드 테스트
public static void main(String[] args) {
new MiniGame1();
} // end of main
} // end of class
package ch06;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class MiniGame1 extends JFrame {
private JLabel jPlayer;
private int jPlayerX = 100;
private int jPlayerY = 100;
private final int MOVE_DISTANCE = 50;
private final int FRAME_WIDTH = 500;
private final int FRAME_HEIGHT = 500;
private final String PLAYER_NAME = "야스오";
private final int PLAYER_WIDTH = 100;
private final int PLAYER_HEIGHT = 100;
public MiniGame1() {
initData();
setInitLayout();
addEventListener();
}
private void initData() {
setSize(FRAME_WIDTH, FRAME_HEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jPlayer = new JLabel(PLAYER_NAME);
jPlayer.setSize(PLAYER_WIDTH, PLAYER_HEIGHT);
}
private void setInitLayout() {
// 좌표 기반으로 배치관리자 변경
setLayout(null);
add(jPlayer);
jPlayer.setLocation(jPlayerX, jPlayerY);
setVisible(true);
}
private void addEventListener() {
// jPlayer 객체에게서만 keyListener 동작을 시키고자 한다면
// 익명 구현클래스로 KeyListener 인터페이스를 재정의 할 수 있다.
// jPlayer.addKeyListener(this);
addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
jPlayerX += MOVE_DISTANCE;
} else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
jPlayerX -= MOVE_DISTANCE;
} else if (e.getKeyCode() == KeyEvent.VK_UP) {
jPlayerY -= MOVE_DISTANCE;
} else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
jPlayerY += MOVE_DISTANCE;
}
jPlayer.setLocation(jPlayerX, jPlayerY);
}
});
}
// 코드 테스트
public static void main(String[] args) {
new MiniGame1();
} // end of main
} // end of class
'Java > Swing 프로젝트' 카테고리의 다른 글
Swing - 8 (쓰레드 활용) (0) | 2024.05.02 |
---|---|
Swing 로또 게임 만들기 - 7 (0) | 2024.05.01 |
Swing - 5 (이벤트리스너) (0) | 2024.04.29 |
Swing - 4 (이미지 겹치는 방법) (0) | 2024.04.29 |
Swing - 3 (이미지 올리기) (0) | 2024.04.29 |