将图像添加到画布窗口

时间:2015-04-18 00:28:48

标签: java java-canvas

我正在尝试将.png图片添加到我的画布窗口,但是我遇到了一些问题。假设我在窗口中添加了不同类型的对象。有Pacman类,它扩展了GameObject类。但是,我的pacman目前是一个矩形,我想用Pacman的图片替换这个矩形。我尝试了10种不同的代码,但你需要扩展canvas或JFrame。不幸的是,我不能这样做,因为我已经用类GameObject扩展了类Pacman。

我是对象编程的新手,但有没有办法将图片添加到窗口?

1 个答案:

答案 0 :(得分:4)

考虑以MVC(模型 - 视图 - 控制)方式重新设计GUI程序,其中关键是模型(程序的逻辑表示)不同于视图(视图的可视化表示)该程序)。这样,您的Pacman模型类可以扩展您的GameObject模型类,而Pacman的可视化表示可以是一个JLabel,它将您的pacman图像保存在ImageIcon中。

编辑:或者,或者作为MadProgrammer声明,在其paintComponent(Graphics g)方法中将视觉表示作为精灵在游戏的主要JPanel上绘制。

这里的关键点是游戏的逻辑表示 - 主要是参与者的位置,移动和互动,例如吃豆人,敌人,食物",电源位,迷宫边界的编码与GUI,图像或用户交互无关。这部分代码不使用任何GUI库,如Swing或AWT,不使用KeyListeners或键绑定。它将有一个游戏循环和逻辑,将移动非用户控制的元素,它将检查吃豆人和敌人的触摸,它将有Pac-Man状态的代码 - 正常和授权 - 和逻辑为什么当吃豆人接触敌人时,取决于吃豆人的状态。它会有一些方法允许另一个类移动吃豆人,例如moveRight()moveLeft()moveUp()moveDown()

GUI将根据模型中的位置显示迷宫和演员。听众将通知GUI关于模型状态的变化,然后重新绘制自己和演员的新位置。它将拥有侦听用户交互的侦听器,然后将该信息传递给控制器​​,然后控制器将更改模型的状态。例如,键绑定可以通知控件类用户正在按向上箭头,然后控件将调用模型的moveUp()方法来启动吃豆人,如果没有障碍阻止这个从发生。

有关M-V-C和Swing的更多信息,请查看: