我想要做的是練習一些鞦韆編碼。我從頭開始創建一個矩形,並在框架上給它一個x和y的位置。我一直在試圖做的是使用一個關鍵的偵聽器來更新x變量來左右移動它。如何使用Key Listener更新「x」變量?
在這裏,我創建它實現一個動作偵聽器的類:
public class Board extends JPanel implements ActionListener {
我添加的 「x」 和 「y」 的變量:
int x, y;
int dx;
int HEIGHT, WIDTH;
private final int DELAY = 50;
接下來是一些附加功能:
public Board() {
setBackground(Color.BLACK);
setFocusable(true);
setDoubleBuffered(true);
addKeyListener(new TAdapter());
x = 15;
y = 150;
dx = 5; //This is what I want to use to update the x variable if possible.
HEIGHT = 15;
WIDTH = 15;
}
這就是我用上述「x」和「y」變量創建廣場的地方:
public void paint(Graphics g) {
super.paint(g);
int red = 103;
int green = 10;
int blue = 100;
Color square = new Color(red, green, blue);
g.setColor(square);
g.fillRect(x, y, WIDTH, HEIGHT);
Toolkit.getDefaultToolkit().sync();
}
好吧,現在我想要完成。
我創建了一個將被送入所執行的操作方法,「移動」的方法,然後我創建了一個處理的關鍵事件密鑰適配器方法:
public void move() {
x += dx;
}
public void actionPerformed(ActionEvent e) {
move();
repaint();
}
private class TAdapter extends KeyAdapter {
public void KeyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_LEFT) {
dx = 1;
}
if (key == KeyEvent.VK_RIGHT) {
dx = -1;
}
}
}
這裏就是我得到的截圖:
一切都體現了通過另一個類,但這一切確實是初始化各種組件的JFrame(規模,知名度等),並啓動該程序。
當我運行該程序時,我無法獲取x變量進行更新。有人可以讓我知道我需要添加什麼嗎?
謝謝。
我對使用KeyListener的建議:**不要**。爲此,請使用[鍵綁定](http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html)。本教程將解釋爲什麼這很重要,以及如何使用這些。 –
謝謝,我會嘗試。 – blutuu
KeyAdapter不會更新您的UI,並且不會在鍵上調用actionPerformed。您需要刷新您的用戶界面以反映更改。 –