我正在开发一款国际象棋游戏。我想让板容器利用GridLayout来显示8x8的JPanel网格。(这将使诸如突出显示所选方block和有效移动等功能变得更加容易。)然后我想在该层上添加棋子,以便可以拖放它们。我最初通过在单独的方形JPanel中绘制来显示这些片段,但我认为稍后尝试拖放它们时会出现问题。从那以后,我一直在尝试使用JLayeredPane作为主容器,但遇到了几个问题。一个是,一旦我为JLayeredPane指定了GridLayout,无论我使用哪个Integer来指定要将JLabel或其他类型的图像添加到的图层,这些片段都会添加到网格中,从而设置它们的位置并扭曲了整个棋盘。
JLayeredPane允许使用JLayeredPane.add(Component,Integer)将多个组件堆叠在一起.较高“层”中的组件显示在较低“层”中的组件之上。Container.add(Component,int)提供了一种类似的机制,即具有较低索引的组件显示在具有较高索引的组件之上。请注意,第一种机制使用Integer,第二种机制使用int。此外,一个在低值之上呈现高值,而另一个则相反。不要混用两者:)我的问题是:当Container已经提供了相同的机制时,使用JLayeredPane有什么意义?一层组件是否比另一层组件更好?更新:还有Container.setComp
我正在尝试将JLayeredPane添加到JPanel,然后将图像(JLabel图标)和按钮添加到JLayeredPane,但均未显示。我已经在没有按钮和分层Pane的情况下测试了图像,所以我知道它可以工作。这是我正在使用的一些代码。有什么我遗漏或做错了什么吗?publicclassMyClassextendsJPanel{privateJLayeredPanelayeredPane;privateJLabelimageContainer=newJLabel();privateJButtoninfo=newJButton("i");MyClass(ImageIconimage){sup