我在使用KeyListeners移动JLabel时遇到了一些问题。当我单击一个键移动我的标签时,它会移动一点,暂停一秒,然后移动。如何让我的运动更加顺畅?
frame.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e) {
if(e.getKeyChar() == 'w'){
moveY -= 10;
label.setLocation(moveX, moveY);
}
if(e.getKeyChar() == 'a'){
moveX -= 10;
label.setLocation(moveX, moveY);
}
if(e.getKeyChar() == 's'){
moveY += 10;
label.setLocation(moveX, moveY);
}
if(e.getKeyChar() == 'd'){
moveX += 10;
label.setLocation(moveX, moveY);
}
}
});
答案 0 :(得分:3)
JFrame
永远不会对KeyEvent
KeyListener
做出反应
JFrame
无法集中JComponent
,你需要使用可聚焦的contianer e,g,JPanel
,但又需要错误的决定,因为需要设置pernament Focus - setFocusable(true)
不要将KeyListener
用于Swing JComponents
,使用可能的抽象,使用KeyBindings
(在此处搜索代码示例)