13

JLabelのカスタムの場所にを配置しようとする次のコードがありますJFrame

public class GUI extends JFrame 
{

    /**
     * 
     * @param args
     */
    public static void main(String args[]) 
    {
        new GUI();
    }
    /**
     * 
     */
    public GUI() 
    {
        JLabel addLbl = new JLabel("Add: ");
        add(addLbl);
        addLbl.setLocation(200, 300);
        this.setSize(400, 400);

        // pack();
        setVisible(true);
    }
}

思い通りに動かないようです。

4

2 に答える 2

27

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

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

public GUI() {
    setLayout(null);
}

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

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

addLbl.setBounds(new Rectangle(new Point(200, 300), addLbl.getPreferredSize()));

これにより、コンポーネントを必要な場所に配置できます。

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

これは、sの使用を開始するための優れたチュートリアルですLayoutManager

ここなしで行かなければならない場合は、LayoutManager ここなしで行くための良いチュートリアルです。

于 2010-09-12T16:56:10.550 に答える
0

フレームの下にロケーションコードを配置すると機能しますが、確実に機能させたい場合は、ロケーションコードをrunwhileループに配置します。それは私がそれを理解するためにしたことであり、それは機能します。

于 2014-11-11T00:41:36.637 に答える