我正在开发一款国际象棋游戏.我想让Board Container利用GridLayout来显示一个8x8的JPanel网格.(这将使突出显示所选方块和有效移动等功能变得更加容易.)然后,我想在这一层上添加碎片,以便可以拖放它们.我最初通过在单个正方形JPanel中绘制它们来显示这些碎片,但是当我试图稍后拖放它们时会发现这个问题.我一直试图使用JLayeredPane作为主要容器,但遇到了几个问题.
一个是,一旦我为JLayeredPane指定了GridLayout,无论我使用哪个Integer来指定要添加JLabel或其他类型图像的图层,都会将这些部分添加到网格中,使其位置设置和扭曲整个董事会.我已经读过使用LayoutManagers会干扰JLayeredPane上的图层定位,所以这并不太令人惊讶.(虽然来自JLayeredPane教程的Oracle演示程序似乎做得很好:http://download.oracle.com/javase/tutorial/uiswing/examples/components/LayeredPaneDemo2Project/src/components/LayeredPaneDemo2.java)
但是,我也尝试将JPanel的网格放入自己的JPanel中,然后将其添加到JLayeredPane的低层,这个想法是我可以将拖放图标添加到更高的单独的非透明JPanel上JLayeredPane的一层.然而,当我这样做之后,在JLayeredPane中只有网格JPanel之后(即在添加拖放图层之前),网格将不会显示.
我也尝试覆盖JLayeredPane的paintComponent(和paint)方法来绘制片段图像,但它们被JPanels隐藏(我可以看到它们确实在那里通过将JPanels设置为非不透明)并且就其而言我可以告诉你没有选择在JLayeredPane上设置图形层.我也尝试使用框架的glassPane来绘制碎片,但也有不受欢迎的行为.
任何帮助解释这些行为,或我出错的地方,将不胜感激!