2013-06-02 48 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()。