2013-06-02 83 views
0

我有一個名爲「DisplayPanel」(它擴展了JPanel)的類,並在那裏繪製了一個來自名爲「Square」(它擴展了JComponent)的類的正方形。如何使用鍵在JPanel中移動矩形?使用鍵移動JPanel中的矩形

Square類有通常的塗裝方法:

public void paintComponent(Graphics g) { 
    Dimension dimension = getSize(); 
    super.paintComponent(g); 
    Graphics2D graphics2D = (Graphics2D) g; 
    g.setColor(Color.black); 
    graphics2D.fill(squarishThing); 
} 

與 「squarishThing」 是一個正常的矩形:

Rectangle squarishThing = new Rectangle (0, 0, 50, 50); 

的事情是:與 「遊戲庫」,努力做「手動」這樣的事情是相當混亂的。我不知道「while循環」在哪裏。我試圖把一個KeyListener放在DisplayPanel中,我無法更新矩形。沒有循環,我不能重畫矩形,因爲paintComponent方法使用了那個不愉快的參數。 OBS:每次我嘗試插入一個循環時,軟件都會崩潰,所以我放棄了這麼做。

如何根據輸入重新繪製對象?

+1

看看使用密鑰綁定。例如,請看看[這個答案](http://stackoverflow.com/a/6887354/522444)。 –

+1

這是一款遊戲嗎?如果是,你需要一個循環。你的意思是「急劇崩潰」?循環不是炸藥。 – Nikki

+0

擺動計時器可以用於簡單的遊戲循環。 –

回答

2

無法重新繪製矩形,因爲paintComponent方法使用了不愉快的參數。 永遠不要調用paintComponent,而是使用repaint()。

使用KeyBindings只需將「squarishThing」更新爲適當的值,然後調用repaint()。