java에서 KeyEvent중에서 질문!(화살표)
사에
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class DirectionPanel extends JPanel
{
private final int WIDTH = 300, HEIGHT = 300;//패널 크기.
private final int JUMP = 10; // increment for image movement
private final int IMAGE_SIZE = 31;
private ImageIcon up, down, right, left, currentImage;//아이콘 인스턴스 변수.
private int x, y;//좌표값.
//constructor
public DirectionPanel()
{
addKeyListener (new DirectionListener());
x = WIDTH / 2;//좌표 지정.
y = HEIGHT / 2;
up = new ImageIcon (arrowUp.gif);//해당 아이콘에 대한 변수 지정.
down = new ImageIcon (arrowDown.gif);
left = new ImageIcon (arrowLeft.gif);
right = new ImageIcon (arrowRight.gif);
currentImage = right;//디폴트 아이콘은 right모양.
setBackground (Color.black);//배경색과 패널 크기.
setPreferredSize (new Dimension(WIDTH, HEIGHT));
setFocusable(true);//키보드를 눌렀을 때 화면에 표시하게 해줌.
}
public void paintComponent (Graphics page)
{
super.paintComponent (page);
currentImage.paintIcon (this, page, x, y);
}
//리스너 등록.키보드가 눌려졌을 때.
private class DirectionListener implements KeyListener
{
public void keyPressed (KeyEvent event)
{
switch (event.getKeyCode())
{
case KeyEvent.VK_UP://방향키가 위를 가르키면
currentImage = up;//up아이콘이 작동.
y -= JUMP;//y좌표값이 감소하면서 위로 이동한다.
break;
case KeyEvent.VK_DOWN://방향키가 아래를 가르키면
currentImage = down;//down아이콘이 작동.
y += JUMP;//y좌표값은 증가하면서 아래로 이동.
break;
case KeyEvent.VK_LEFT://방향키가 왼쪽을 가르키면
currentImage = left;//left아이콘이 작동
x -= JUMP;//x좌표값을 감소시키면서 왼쪽으로 이동.
break;
case KeyEvent.VK_RIGHT://방향키가 오른쪽을 가르키면
currentImage = right;//right아이콘이 작동하면서 x값을 증가시키고 오른쪽으로 이동.
x += JUMP;
break;
}
repaint();//왼쪽,오른쪽... 등등이 눌러진 후 다른 키가 눌려지면 화면을 다시 표시한다.
}
//사용하지 않는 비어있는 값들을 정의해줌.
public void keyTyped (KeyEvent event) {}
public void keyReleased (KeyEvent event) {}
}
}이 소스에서....방향키를 누르면 화살표(정해진 이미지 아이콘을 불러와서 위,아래,좌,우)가
작동하여 움직이게 되는데 화살표가 패널 밖으로 나가는 것을 허락하지 못하게 하는 방법이
있나요? 힌트좀 주세요. 이것저것 찾아봐도 못찾겠어요....
-
풋내 2026-07-20
하~제가 너무 어렵게 생각을 했나봐요.
괜히 이곳저곳에서 for문 돌리는 바람에.-_-;;; 감사합니다. -
들찬길 2026-07-20
--; x,y 가 패널 크기 안넘어 가면 되네요...
x-=JUMP; = x = x WIDTH ? x : x-JUMP ;
y 도 같은 방법으로...
| 번호 | 제 목 | 글쓴이 | 날짜 |
|---|---|---|---|
| 2752024 | 소숫점 뺄셈 !! ㅠㅜ | 초롬 | 2026-10-20 |
| 2751970 | 자바 게임 만들려는데 부탁드립니다 (1) | 라온제나 | 2026-10-19 |
| 2751908 | 자바스크립트 처리속도를 체크할 수 있는 방법 있나요? (1) | 테이 | 2026-10-19 |
| 2751822 | 그누보드 아이프레임으로 구현했는데 제목 클릭해서 들어가면 푸터가 동동...떠다녀요 | 내꺼하자 | 2026-10-18 |
| 2751790 | 자바 그래픽 관련을 공부하고 싶은데요.. 어디 좋은 사이트나 책 없을까요?? (1) | 큰재 | 2026-10-18 |
| 2751733 | CTF가머죠? (5) | 두동 | 2026-10-17 |
| 2751709 | 배열부분 궁금한 부분이있습니다. | 딸기우유 | 2026-10-17 |
| 2751677 | 포인터 책을 보다가,,, (2) | 동백 | 2026-10-17 |
| 2751648 | 익스플로 버전에 따라서 생기는 공백.. (1) | 모아 | 2026-10-17 |
| 2751623 | DEL 태그의에서 선굵기 및 컬러지정이 가능한가 해서요~ (4) | 비치나 | 2026-10-16 |
| 2751573 | 테마 업로드 에러.. (1) | 꽃 | 2026-10-16 |
| 2751548 | 수학? 물리?? (3) | 찬늘 | 2026-10-16 |
| 2751461 | 상단네비 fixed ie6 핵 해결방안이 있을까요? | 맑다 | 2026-10-15 |
| 2751436 | 레이아웃을 잡고 코딩을 하는데 드림위버에서의 결과와 IE에서 결과가 다르게 나오네요. (3) | 키클 | 2026-10-15 |
| 2751403 | 형들좀도와주세요string compression (1) | 알렉산더 | 2026-10-14 |
| 2751349 | 링크 다운로드하기 | 팬지 | 2026-10-14 |
| 2751295 | c++한번도 손않댄 사람이... | 날위해 | 2026-10-13 |
| 2751267 | 플래시8 사용에서 플레이어 만들었는데요 (1) | 블1랙캣 | 2026-10-13 |
| 2751182 | 회원가입 | 파랑새 | 2026-10-12 |
| 2751152 | 소셜 플러그인 문제입니다. | 얀 | 2026-10-12 |
