我正在尝试使用可拖动的棋子来实现棋盘,如下所示。但是,我无法保持被拖动的部分保持在其他节点前面的下方或右侧。左和右似乎工作正常。
我尝试通过首先声明import time
with open('filename.txt', 'r') as f:
for line in f:
print(line.strip())
time.sleep(2)
s形成方格背景以及之后的所有部分来解决这个问题,因为我读到Java根据{{1}的顺序分配z-index } s被添加到他们的StackPane
。这种方法反映如下。我还尝试创建Node
并向其中添加Parent
和Group
,以便能够使用StackPane
。仅在显示的坐标标签中产生。
如何实现我追求的功能?
此方法创建了主板:
ImageView
此课程制作可拖动的图标:
toFront()
这就是我所看到的:
答案 0 :(得分:1)
您从左到右逐行添加单元格。由于您将片段添加到单元格中,因此单元格的后代将覆盖上方或同一行中的单元格内容,并留在单元格中,并将被所有其他单元格的内容覆盖。
要解决此问题,您可以将拖动项目的父项设为GridPane
中的最顶层节点:
public DraggablePieceIcon(Image image) {
super(image);
setOnMousePressed(event -> {
mouseX = event.getSceneX();
mouseY = event.getSceneY();
// make cell containing this piece the top-most cell
this.getParent().toFront()
});
...
}
请注意,此解决方案将要求您实现一些逻辑,使其移动到的单元格的子项并将这些块移动到这些单元格的中心。否则,如果你稍后将这个片段拖到这样的单元格中,那么其他单元格就可以覆盖它......
另一种方法是制作GridPane
本身的儿童作品。无论如何,您可以独立于细胞拖动碎片;单元格和棋子之间的关联对于模型(即在这种情况下是国际象棋规则的实现)非常重要,不适用于视图,通常这些部分是分开的。