我正在创建一个蛇游戏,我需要使用一个JLayeredPane,它将容纳2个Jpanel,然后将这个JLayeredPane插入到JFrame中。我这样做的原因是因为我需要有基础层 - 游戏,并且在顶部有一层将水果产生到板上。我不是直接在板上做这个的原因是因为板子经常被重新粉刷,我需要一种方法来随机改变水果的颜色,每次玩家收集水果。然而,水果会在重新粉刷时不断改变颜色,并根据阵列生成新的随机颜色。
简单地使用JLayeredPane的问题是我需要框架与其内部的组件完美匹配,setPreferredSize似乎不这样做,因为它不考虑插入。当setResize(false)时,insets与实际的插入值不匹配,所以我不能简单地添加insets。
所以我的问题是,我如何让JLayeredPane适合JPanel,这些JPanel中的组件具有维度,然后将此JLayeredPane放入JFrame。
答案 0 :(得分:1)
如How to Use Layered Panes: Setting a Component's Position Within Its Depth所示,使用setBounds()
在JLayeredPane
内定位组件。
或者,覆盖paintComponent()
或JCOmponent
中的JPanel
并渲染蛇形图层下方的果实图层。如果不需要重新采样,drawImage()
在这种情况下会非常快。