【发布时间】:2019-04-25 01:16:52
【问题描述】:
我正在为我正在进行的俄罗斯方块项目测试 KeyListener。我的主要问题是我无法让 JPanel 在按下一个键后重新绘制以更新矩形的位置。 JPanel 嵌入到 JFrame 中,所以我不确定是更新面板还是框架。代码如下:
public class mainBoardTest extends JPanel implements KeyListener {
private Rectangle rect;
public mainBoardTest() {
setPreferredSize(new Dimension(400, 800));
setBackground(Color.BLACK);
}
public void init() {
this.addKeyListener(this);
}
public void paint(Graphics g) {
//super.paintComponent(g);
rect = new Rectangle(0,0,50,50);
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.RED);
g2.fill(rect);
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
rect.setLocation(rect.x + 2, rect.y);
}
else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
rect.setLocation(rect.x - 2, rect.y);
}
else if (e.getKeyCode() == KeyEvent.VK_UP) {
rect.setLocation(rect.x, rect.y - 2);
}
else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
rect.setLocation(rect.x, rect.y + 2);
}
repaint(); //does not repaint
}
【问题讨论】:
标签: java keylistener