나는 간단한 프로젝트를 진행하고 있으며 드로어 블 오브젝트를 (a) 십자형으로 움직이는 방법을 얻을 수 없다. 내 말은, 예를 들어, 동시에 위로 화살표 키를 누를 때, 나는 드로어 블이 북서쪽으로 정확하게 움직 이도록하고 싶습니다. 그러나 KeyListener
메서드에서 간단한 if 문을 사용하여이를 수행 할 수 없었습니다. 특별한 방법으로 추가 패키지를 만들 수 있습니까? 여기 내 코드입니다 :자바 움직이는 공
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.geom.Ellipse2D;
import javax.swing.*;
import javax.swing.JPanel;
public class Top extends JPanel implements ActionListener, KeyListener {
/**
*
*/
private static final long serialVersionUID = 1L;
Timer t = new Timer(5, this);
int xR = 0;int yR = 0; int zR = 0;
double x = 0, y = 0, xVel = 0, yVel = 0, width = 0, height = 0;
public Top() {
t.start();
setBackground(Color.black);
addKeyListener(this);
setFocusable(true);
}
public void actionPerformed(ActionEvent e) {
repaint();
x+=xVel;
y+=yVel;
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
g2d.setPaint(Color.blue);
g2d.fill(new Ellipse2D.Double(this.x, this.y, 50, 50));
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
if(keyCode == KeyEvent.VK_DOWN) {
down();
}
if(keyCode == KeyEvent.VK_UP) {
up();
}
if(keyCode == KeyEvent.VK_RIGHT) {
right();
}
if(keyCode == KeyEvent.VK_LEFT) {
left();
}
}
public void down() {
this.yVel= 1;
this.xVel= 0;
}
public void up() {
this.yVel = -1;
this.xVel = 0;
}
public void left() {
this.xVel = -1;
this.yVel = 0;
}
public void right() {
this.xVel = 1;
this.yVel = 0;
}
@Override
public void keyReleased(KeyEvent e) {
int keyCode = e.getKeyCode();
if(keyCode == KeyEvent.VK_DOWN ||
keyCode == KeyEvent.VK_UP ||
keyCode == KeyEvent.VK_RIGHT ||
keyCode == KeyEvent.VK_LEFT) {
xVel=0;
yVel=0;
}
}
}
* 이 코드는 정확히 바로 * 당신은 키보드 이벤트를 수신하기 위해 KeyListener
를 사용할 필요가
도움을 받으려면 코드를 게시해야 할 수도 있습니다. – Jonatan
우리는 당신이 어떤 코드를 보지 않고 무엇을 시도했는지 모르겠다. 우리가 해결책을 추측 할 필요가 없도록 몇 가지를 게시 해주십시오. – Chris
여기에 수락 된 대답을보세요 : http://stackoverflow.com/questions/752999/ i-handle-multiple-key-java-press-in-java - 키보드가 별도의 이벤트로 그들을 보내기 때문에 여러 개의 키에 대한 "이벤트"가 없습니다 –