JLayeredPane中的打包方法

时间:2015-01-09 23:36:04

标签: java swing jpanel jlayeredpane

我正在创建一个蛇游戏,我需要使用一个JLayeredPane,它将容纳2个Jpanel,然后将这个JLayeredPane插入到JFrame中。我这样做的原因是因为我需要有基础层 - 游戏,并且在顶部有一层将水果产生到板上。我不是直接在板上做这个的原因是因为板子经常被重新粉刷,我需要一种方法来随机改变水果的颜色,每次玩家收集水果。然而,水果会在重新粉刷时不断改变颜色,并根据阵列生成新的随机颜色。

简单地使用JLayeredPane的问题是我需要框架与其内部的组件完美匹配,setPreferredSize似乎不这样做,因为它不考虑插入。当setResize(false)时,insets与实际的插入值不匹配,所以我不能简单地添加insets。

所以我的问题是,我如何让JLayeredPane适合JPanel,这些JPanel中的组件具有维度,然后将此JLayeredPane放入JFrame。

1 个答案:

答案 0 :(得分:1)

How to Use Layered Panes: Setting a Component's Position Within Its Depth所示,使用setBounds()JLayeredPane内定位组件。

或者,覆盖paintComponent()JCOmponent中的JPanel并渲染蛇形图层下方的果实图层。如果不需要重新采样,drawImage()在这种情况下会非常快。