GridLayout に配置される 10 個の JPanel のグループがあります。ここで、1 つの JPanel (たとえば panel1) をドラッグして別の JPanel (たとえば panel2) の上に配置し、panel2 を左右に移動し、panel1 を panel2 の位置に配置します。ドラッグ オプションを使用して JPanel をドラッグできますが、必要な位置にドロップできません。パネルをドロップ位置に移動する際に助けが必要です。私の質問が明確でない場合は申し訳ありません。ご理解いただければ幸いです。前もって感謝します。
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   に答える