2012-03-19 4 views
0

私はJLabel lab1を作成しました。私は、パネルの移動ポイントとホームポジション間のラベルの位置を交互にクリックしてドラッグすると、パネルにそれを追加しました。ここでラベルにドラッグするとマウスがホームポジションに戻ります

lab1.addMouseMotionListener(new InfoListener()); 

をのMouseMotionListenerを追加することはmouseDraggedコードは

public void mouseDragged(MouseEvent me){ 

      lab1=(JLabel)me.getSource(); 
      lab1.setLocation(me.getPoint()); 

    } 

です私はそれが欲しいところまで正確に移動しません。パネルはnullレイアウトになっていて、最初はsetBoundsについても触れました。あなたのトピックについて何も話していないここに掲載

答えて

3

この資料について

Point p=me.getPoint(); 

lab1.setLocation(p.x+lab1.getX(), p.y+lab1.getY()); 
+0

それは動作します!ありがとう。計算の間違いだったのですか? –

+0

ラベルにマウスの座標(マウスが押された位置)がある場合。左上隅のマウスを押すとします。だから、ポイントは(1,1)です。しかし、あなたはラベルコンテナ上の位置が必要です。そこで、ラベルの位置も追加します。 – StanislavL

+0

よろしいですか?ありがとう!! –

1

1)コード、mouseDragged(MouseEvent me)

2とSSCCE実証youtは問題であなたの質問を編集)Drag and Dropについてのチュートリアルを読んで、例here

3)AbsoluteLayoutを使用しないでください、適切に使用してくださいLayoutManager

+0

+1このチュートリアルでは、 D&Dでは、ユーザーがドロップしたときにサブコンポーネントを配置するとnullレイアウトがうまくいくと思います。 – StanislavL

+0

@StanislavL nullレイアウトが許容される非常にまれな機会のいくつか - さらに良い選択肢が_with_ a manager:RobのDragLayout :-)を参照してください – kleopatra

関連する問題