有一组10个JPanel放在GridLayout中。现在我想拖动一个JPanel(例如panel1)并将其放在另一个JPanel(例如panel2)上,并将panel2向左或向右移动,并将panel1放在panel2位置。我可以使用拖动选项拖动JPanel,但我无法将其拖放到所需位置。在移动位置移动面板我需要一些帮助。 对不起,如果我的问题不明确。希望你能理解。 提前谢谢。
答案 0 :(得分:0)
你可以试试这个,但就像我说的那样,可能有更好的方法:
public JPanel getPanelColliding(JPanel dragPanel, JPanel[] panels)
{
Rectangle rDrag = dragPanel.getBounds();
for (JPanel panel : panels){
if (panel == dragPanel) continue;
Rectangle r = panel.getBounds();
if (r.insersects(rDrag))
return r;
}
return null;
}
然后在 drag 侦听器中,如果 getPanelColliding()不为null,则可以调用它并交换面板位置。我没有测试过这个,但它应该可以工作!
答案 1 :(得分:0)
做了类似的事情,但在SWT Control(s)
移动。
我的控件彼此相邻(它们之间没有空格),所以当我放下 control1 时,它会知道哪个 control2 它被删除了(带{ {1}})。
之后,我将control2.getBounds().contains(dropPoint)
映射到 control2 ,并找出dropPoint
是否位于 control2 的左侧或右侧宽度。然后,我只需使用dropPoint
或moveAbove(control2)
移动 control1 。
最后,我调用moveBelow(control2)
(容器是控件的父级)来通知其子项布局已更改,并且子项移动。