1

一组 10 个 JPanel 被放置在一个 GridLayout 中。现在我想拖动一个JPanel(例如panel1)并将其放在另一个JPanel(例如panel2)上,然后将panel2向左或向右移动并将panel1放在panel2的位置。我可以使用拖动选项拖动 JPanel,但我无法将它放在所需的位置。我需要一些帮助来移动放置位置的面板。对不起,如果我的问题不清楚。希望你能理解。提前致谢。

4

2 回答 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))。

之后,我将 映射dropPointcontrol2,并找出是在control2宽度dropPoint的左侧还是右侧。然后我简单地用or移动control1moveAbove(control2)moveBelow(control2)

最后,我调用container.layout()容器是控件的父级)通知其子级布局已更改,并且子级移动。

于 2013-08-23T19:30:04.083 回答