GridLayout に配置される 10 個の JPanel のグループがあります。ここで、1 つの 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()が null でない場合は、それを呼び出してパネルの位置を入れ替えることができます。私はこれをテストしませんでしたが、うまくいくはずです!
于 2013-08-23T17:46:55.480 に答える
0
これと似たようなことをしましたが、動き回っていSWT Control(s)
ます。
私のコントロールは互いに隣り合っていたので(それらの間にスペースはありません)、 control1 をドロップすると、どのcontrol2にドロップされているかがわかります( で)。control2.getBounds().contains(dropPoint)
その後、dropPoint
をcontrol2にマップし、 がcontrol2の幅のdropPoint
左側にあるか右側にあるかを調べます。次に、またはでcontrol1を移動します。moveAbove(control2)
moveBelow(control2)
最後に、container.layout()
( containerはコントロールの親) を呼び出して、レイアウトが変更され、子が移動したことを子に通知します。
于 2013-08-23T19:30:04.083 に答える