안녕하세요, jframe에서 키를 누른 채 사각형을 위아래로 이동하려고합니다. 하지만 위쪽 또는 아래쪽 화살표 키를 누르면 사각형이 내려 가서 멈추지 않습니다. 나는 실수를 저지른 곳을 볼 수 없다.jframe의 키를 눌렀을 때 직사각형을 위아래로 움직입니다.
실수는 파일 하나에 있다고 생각하지 않지만 말했다시피, 나는 그것을 찾을 수 없습니다.
파일 1
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
public class test{
public static void main (String[] arg) {
JFrame window = new JFrame();
test2 t2 = new test2();
window.add(t2);
window.setSize(1000,1000);
window.setTitle("TEST");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setVisible(true);
}
}
파일이
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
public class test2 extends JPanel implements ActionListener, KeyListener{
Timer t = new Timer(5, this);
double x = 0, y = 0, velx = 0, vely = 0;
public test2() {
t.start();
addKeyListener(this);
setFocusable(true);
setFocusTraversalKeysEnabled(false);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.fill(new Rectangle((int)x, (int)y, 20, 40));
}
public void actionPerformed(ActionEvent e) {
repaint();
x += velx;
y += vely;
}
public void up() {
vely = -1.5;
velx = 0;
}
public void down() {
vely = 1.5;
velx = 0;
}
public void keyPressed(KeyEvent e) {
int code = e.getKeyCode();
if (code == KeyEvent.VK_UP); {
up();
}
if (code == KeyEvent.VK_DOWN); {
down();
}
}
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e){}
}
사이드 노트와 같이 : 보이는 영역에서 벗어난 값을 가지지 않도록 X와 Y를 "고정"하는 것. – Korashen