将代号中的组件放到最后一个位置
Dropping a Component In Codename One to The Last Position
我在 Codename One Container
中启用了拖放功能,并在其中放置了可拖动组件。我这样做使用:
container.setDropTarget(true);
对于我使用的组件 setDraggable(true)
当我放在另一个子容器上方时,这在大多数情况下都能无缝运行。如果我将父组件 Container
中的所有子组件放到下方,则放置操作将失败。如果将子容器放在父容器区域的黑色区域中,我希望将子容器放在最后。
迁移自 this。
您需要确保 Container
延伸到该位置,并且黑色区域确实是 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);
}
}
我在 Codename One Container
中启用了拖放功能,并在其中放置了可拖动组件。我这样做使用:
container.setDropTarget(true);
对于我使用的组件 setDraggable(true)
当我放在另一个子容器上方时,这在大多数情况下都能无缝运行。如果我将父组件 Container
中的所有子组件放到下方,则放置操作将失败。如果将子容器放在父容器区域的黑色区域中,我希望将子容器放在最后。
迁移自 this。
您需要确保 Container
延伸到该位置,并且黑色区域确实是 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);
}
}