【发布时间】:2013-07-14 18:35:39
【问题描述】:
我只是用 GUI 做一些随机的事情,我遇到了这个问题。当我按右箭头键时,矩形确实在 X 轴上移动,但移动的距离不是恒定的。它上升得很快,每次按下后矩形都会变大移动。在我最近的代码行中 X=X+1 似乎工作得很好。这是我的代码:
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.*;
public class Buffer extends JPanel implements KeyListener{
public static JFrame frame;
public int x;
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.red);
g.fillRect(x,0,20,20);
frame.addKeyListener(this);
}
public static void main(String args[]){
Buffer z=new Buffer();
frame=new JFrame();
frame.setSize(500,500);
frame.setVisible(true);
frame.setFocusable(true);
frame.add(z);
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_RIGHT){
x=x+1;
repaint();
}
}
}
【问题讨论】:
-
对于 Swing,通常在基于 AWT 的较低级别
KeyListener上使用键绑定。有关如何使用它们的详细信息,请参阅How to Use Key Bindings。 -
扩展 Andrew 的评论,您还可以查看 Motion Using the Keyboard 了解一些想法。
标签: java swing jpanel keylistener rect