我有一個框架,它作爲一個矩形。 我想知道如果我點擊箭頭鍵,如何移動矩形。 我搜索,並找到一些例子,但毫無效果(奇怪,因爲它應該是一個簡單的事)如何用箭頭鍵移動矩形?
這裏是我的Rectangle類:
public class PlayerOne implements KeyListener {
int x,y;
public PlayerOne(JPanel panel){
this.x = panel.getWidth()/2;
this.y = panel.getHeight()/2;
}
public void paint(Graphics g){
g.setColor(Color.RED);
g.fillRect(125, 480, 60, 10);
}
@Override
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
int keyCode = arg0.getKeyCode();
if(keyCode == arg0.VK_KP_RIGHT){
this.x+=5;
}
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
}
這是主要的:
public class PingPong extends JPanel {
private static final long serialVersionUID = -4170574729049260633L;
//Initialize
Table table = new Table();
PlayerOne po = new PlayerOne(this);
public void paintComponent(Graphics g){
super.paintComponent(g);
table.paint(g);
po.repaint(g);
}
public static void main(String[] args){
JFrame frame = new JFrame();
frame.setTitle("Pong");
frame.setSize(326, 533);
frame.add(new PingPong()).setBackground(Color.DARK_GRAY);
frame.getContentPane().setBackground(Color.DARK_GRAY);
frame.setVisible(true);
}
}
您需要'KeyListener'。 –
@CoolGuy我增加了一個,但是我不知道如何讓這個矩形移動...我編輯了我的文章,請你看看嗎? –
通過使用KeyBindigs而不是KeyListener,paint應該是paintComponent(具有super。paintComponent),而不是KeyListener的成員,或者不是真正的JComponent的成員,例如, JPanel,繪畫應該通過repaint()從paintComponent – mKorbel