我正在尝试使用NetBeans IDE为GUI制作国际象棋游戏,但我不能让棋子停留在棋盘上方,当我尝试棋盘被推开时。我正在为两张图片使用标签。如何在不将棋盘作为背景的情况下让棋子保持在棋盘上方? (窗口将有棋盘和右侧的信息面板,如计时器和东西,所以我不想让棋盘图像成为整个框架的背景)
答案 0 :(得分:2)
你可能会尝试一些事情。
将棋子标签添加到棋盘标签上。这将允许您在单个单元格上“叠加”该块。这将要求您使用单元格的布局管理器,类似于GridBagLayout
可能会这样做,因为它会自动将组件置于其父级空间中。
使用像JLayeredPane
这样的GridBagLayout
,可以让你在另一个面板之上。
底层是JPanel
,其中包含棋盘的每个单元格,顶层是透明的JPanel
,其中包含所有棋子
这变得更加复杂,因为您需要设计一些方法来填充“碎片”图层的空白区域。
根据您的需要,这两个图层都会使用GridBagLayout
或GridLayout
...
使用单个容器和GridBagLayout
。这将允许您同时向布局中的同一(虚拟)单元格添加两个组件。
这变得有点棘手,因为您需要管理组件的z深度,以确保将这些部件布置在电路板顶部。