1

GridLayout に配置される 10 個の JPanel のグループがあります。ここで、1 つの 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()が null でない場合は、それを呼び出してパネルの位置を入れ替えることができます。私はこれをテストしませんでしたが、うまくいくはずです!

于 2013-08-23T17:46:55.480 に答える
0

これと似たようなことをしましたが、動き回っていSWT Control(s)ます。

私のコントロールは互いに隣り合っていたので(それらの間にスペースはありません)、 control1 をドロップすると、どのcontrol2にドロップされているかがわかります( で)。control2.getBounds().contains(dropPoint)

その後、dropPointcontrol2にマップし、 がcontrol2の幅のdropPoint左側にあるか右側にあるかを調べます。次に、またはでcontrol1を移動します。moveAbove(control2)moveBelow(control2)

最後に、container.layout()( containerはコントロールの親) を呼び出して、レイアウトが変更され、子が移動したことを子に通知します。

于 2013-08-23T19:30:04.083 に答える