一组 10 个 JPanel 被放置在一个 GridLayout 中。现在我想拖动一个JPanel(例如panel1)并将其放在另一个JPanel(例如panel2)上,然后将panel2向左或向右移动并将panel1放在panel2的位置。我可以使用拖动选项拖动 JPanel,但我无法将它放在所需的位置。我需要一些帮助来移动放置位置的面板。对不起,如果我的问题不清楚。希望你能理解。提前致谢。
问问题
140 次
2 回答
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;
}
然后在您的拖动监听器中,如果getPanelColliding()不为空,您可以调用它并交换面板位置。我没有对此进行测试,但它应该可以工作!
于 2013-08-23T17:46:55.480 回答
0
做了类似的事情,但四处走动SWT Control(s)
。
我的控件彼此相邻(它们之间没有空格),所以当我放下control1时,它会知道它被放在哪个control2上(使用control2.getBounds().contains(dropPoint)
)。
之后,我将 映射dropPoint
到control2,并找出是在control2宽度dropPoint
的左侧还是右侧。然后我简单地用or移动control1。moveAbove(control2)
moveBelow(control2)
最后,我调用container.layout()
(容器是控件的父级)通知其子级布局已更改,并且子级移动。
于 2013-08-23T19:30:04.083 回答