您的课程
Board不会扩展
JPanel课程。因此
paint(),Swing永远不会调用该方法。另外,该语句
gamePanel.repaint()将仅执行的默认
JPanel
paint()方法
gamePanel。相反,您希望执行重写的
paint方法,因此可能需要这样做:
public class Board extends JPanel implements ActionListener { .... public void paint(Graphics g) { this.paint(g); Graphics2D g2d = (Graphics2D)g; g2d.drawImage(bg,0,0,null); g2d.drawImage(myCar.getImg(), myCar.xPos, myCar.yPos, null); System.out.println("Painted"); g2d.dispose(); } ....}
替换为以下功能:
public void actionPerformed(ActionEvent e) { this.repaint();}
替代解决方案: 如果您不希望
Board扩展类
JPanel,则还可以在初始化它时覆盖
paint()方法
gamePanel。
gamePanel = new JPanel() { @Override public void paint(Graphics g) { this.paint(g); Graphics2D g2d = (Graphics2D)g; g2d.drawImage(bg,0,0,null); g2d.drawImage(myCar.getImg(), myCar.xPos, myCar.yPos, null); g2d.dispose(); }};
但是,我建议使用第一个解决方案,而不是使用匿名类的解决方案。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)