4

レイアウトを使用しているときにフレーム内のコンポーネントを移動するにはどうすればよいですか?私はこれを試しました:

    System.out.println(test1.getLocation());
    int oy = test1.getY();
    int ox = test1.getX();
    oy++;
    ox++;
    test1.setLocation(ox, oy);
    validate();
    test1.validate();
    System.out.println(test1.getLocation());

最初の場所は最後の場所と同じです。通常のレイアウトでは場所を変更できないことは承知していますが、どうすれば変更できますか?私は以前に同様の質問をしたことがありますが、答えは得られませんでした。私はこれをインターネットで検索しましたが、答えが見つかりませんでした。

TL; DR-コンポーネントをどのように移動しますか?

4

3 に答える 3

3

DragLayoutを確認し、によって作成されたComponentMoverと組み合わせるのに役立つ場合があります@camickr

于 2012-09-07T22:14:38.650 に答える
3

問題はLayoutManager、パネルのがラベルの場所を設定していることです。

あなたがする必要があるのは、次のようにレイアウトを設定することですnull

setLayout(null);

これにより、フレーム/パネルがコンポーネントを単独でレイアウトしようとしないようになります。

setBounds(Rectangle rect)次に、ラベルを呼び出します。そのようです:

lbl.setBounds(new Rectangle(new Point(200, 300), lbl.getPreferedSize())); これにより、コンポーネントを必要な場所に配置できます。

ただし、コンポーネントを自分でレイアウトする大きな理由がない場合は、通常、LayoutManagersを使用して自分に有利に作業することをお勧めします。

これは、sの使用を開始するための優れたチュートリアルLayoutManagerです。絶対値を使用する必要がある場合は、このチュートリアルを参照しください

于 2012-09-07T22:06:24.233 に答える
2

このsetLocation()メソッドは、レイアウトをに設定するときに機能しますnull。レイアウトマネージャーを使用している場合、1つの選択肢は、コンテナーからコンポーネントを削除し、新しいレイアウト制約を使用してコンポーネントを追加し直すことです。

于 2012-09-07T22:09:25.930 に答える