수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

java에서 KeyEvent중에서 질문!(화살표)

사에

2026.07.20

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) {}
}
}이 소스에서....방향키를 누르면 화살표(정해진 이미지 아이콘을 불러와서 위,아래,좌,우)가

작동하여 움직이게 되는데 화살표가 패널 밖으로 나가는 것을 허락하지 못하게 하는 방법이

있나요? 힌트좀 주세요. 이것저것 찾아봐도 못찾겠어요....

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 풋내 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
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com