gpt4 book ai didi

java - 将 Codename One 中的组件拖放到最后一个位置

转载 作者:行者123 更新时间:2023-12-01 10:32:42 24 4
gpt4 key购买 nike

我已在我的 Codename One 中启用了拖放功能Container 并在其中放置可拖动组件。我这样做是使用:

container.setDropTarget(true);

对于我使用的组件 setDraggable(true)

当我放在另一个子容器上方时,这在很大程度上可以无缝工作。如果我将父 Container 中的所有子组件放在下面,则放置操作将失败。如果子容器被放置在父容器的黑色区域中,我希望子容器位于最后。

enter image description here

迁移自 this .

最佳答案

您需要确保 Container 拉伸(stretch)到该位置,并且黑色区域确实是该 Container 的一部分,而不是父级的一部分。

假设是这种情况,请重写 Container 中的 drop 方法,并确保在这种情况下正确调用它。假设是这样,您可以通过 y 参数检测位置并将组件添加到正确的位置。

public void drop(Component dragged, int x, int y) {
int i = getComponentIndex(dragged);
if(i > -1) {
Component dest = getComponentAt(x, y);
if(dest != dragged) {
int destIndex = getComponentIndex(dest);
if(destIndex > -1 && destIndex != i) {
removeComponent(dragged);
Object con = getLayout().getComponentConstraint(dragged);
if(con != null) {
addComponent(destIndex, con, dragged);
} else {
addComponent(destIndex, dragged);
}
}
}
animateLayout(400);
} else {
Container oldParent = dragged.getParent();
if(oldParent != null) {
oldParent.removeComponent(dragged);
}
Component pos = getComponentAt(x, y);
i = getComponentIndex(pos);
if(i > -1) {
addComponent(i, dragged);
} else {
addComponent(dragged);
}
getComponentForm().animateHierarchy(400);
}
}

关于java - 将 Codename One 中的组件拖放到最后一个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35006771/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com