Java JLayeredPane中的Pack方法

Java JLayeredPane中的Pack方法,java,swing,jpanel,jlayeredpane,Java,Swing,Jpanel,Jlayeredpane,我正在创建一个蛇游戏,我需要使用一个JLayeredPane来容纳2个JPanel,这个JLayeredPane将被插入JFrame。我这样做的原因是因为我需要有一个基础层——游戏,在上面的一个层将在棋盘上产生果实。我不直接在棋盘上做这件事的原因是因为棋盘一直在重新上漆,我需要一种方法在玩家每次收集水果时随机改变水果的颜色。然而,当电路板重新喷漆时,水果将不断改变颜色,并根据阵列生成新的随机颜色 简单使用JLayeredPane的问题是,我需要框架与其中的组件完美匹配,setPreferredS

我正在创建一个蛇游戏,我需要使用一个JLayeredPane来容纳2个JPanel,这个JLayeredPane将被插入JFrame。我这样做的原因是因为我需要有一个基础层——游戏,在上面的一个层将在棋盘上产生果实。我不直接在棋盘上做这件事的原因是因为棋盘一直在重新上漆,我需要一种方法在玩家每次收集水果时随机改变水果的颜色。然而,当电路板重新喷漆时,水果将不断改变颜色,并根据阵列生成新的随机颜色

简单使用JLayeredPane的问题是,我需要框架与其中的组件完美匹配,setPreferredSize似乎没有做到这一点,因为它没有考虑插入。当setResize(false)时,插入值与实际插入值不匹配,因此我不能简单地添加插入值

因此,我的问题是,如何使JLayeredPane适合JPanel,这些JPanel中的组件具有尺寸,然后将此JLayeredPane放入JFrame。

如所示,使用
setBounds()
JLayeredPane
中定位组件

或者,在
JCOmponent
JPanel
中重写
paintComponent()
,并渲染snake层下方的水果层。如果不需要重新采样,
drawImage()
在这种情况下非常快