키 입력이 필요한 저수준 게임을 만드는 중입니다. 그래서 평소처럼 KeyListener
과 KeyEvent
라이브러리를 가져 왔습니다. 나는 세 가지 필수 방법을 만들었습니다 : keyPressed
, keyReleased
, keyTyped
. 그런 다음 keyListener
클래스를 "testJPanel"클래스에 추가하고 keyPressed
메서드에서 switch
을 만들어 특정 버튼이 눌려 졌는지 여부를 확인했습니다. keyReleased
및 keyTyped
방법에 대해서는 빈/빈칸으로 남겨 두었습니다. 내게는 모든 것이 멋지게 멋지지만, Java
은 키보드 입력을 등록하지 않는 것 같습니다. 위쪽 화살표 키를 누르면 프로그램이 "Test"를 인쇄해야하지만 슬프게도 그렇지 않습니다. 왜 그거야? 모든 도움을 주시면 감사하겠습니다.KeyListener의 입력을 인식하지 못했습니다.
testJFrame.java
import java.awt.Color;
import javax.swing.JFrame;
public class testJFrame extends JFrame {
public testJFrame() {
setTitle("A test application");
setSize(500, 500);
setBackground(Color.black);
setResizable(false);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setFocusable(true);
add(new testJPanel());
}
public static void main(String[] args) {
testJFrame testJFrame = new testJFrame();
}
}
testJPanel.java
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;
import javax.swing.Timer;
public class testJPanel extends JPanel implements KeyListener, ActionListener {
public testJPanel() {
Timer timer = new Timer(15, this);
timer.start();
addKeyListener(this);
}
public void update() {
}
@Override
public void actionPerformed(ActionEvent a) {
update();
}
@Override
public void keyPressed(KeyEvent k) {
switch(k.getKeyCode()) {
case KeyEvent.VK_UP:
System.out.println("Test");
}
}
@Override
public void keyReleased(KeyEvent k) {
}
@Override
public void keyTyped(KeyEvent k) {
}
}