1

JPanel の初期化に問題があります。これが私のコードです:`

    JPanel    canvas = new JPanel();
    JPanel can = canvas;
    System.out.println("COMPONENTS 1 :" + canvas.getComponentCount());
    System.out.println("COMPONENTS 1 :" + can.getComponentCount());
    JTextField txt = new JTextField();
    txt.setBounds(100, 100, 200, 30);
    can.add(txt);
    System.out.println("COMPONENTS 2 :" + canvas.getComponentCount());
    System.out.println("COMPONENTS 2 :" + can.getComponentCount());

`

出力は次のとおりです。

COMPONENTS 1 :0
COMPONENTS 1 :0
COMPONENTS 2 :1
COMPONENTS 2 :1

私が欲しいもの:

COMPONENTS 1 :0
COMPONENTS 1 :0
COMPONENTS 2 :0
COMPONENTS 2 :1
4

1 に答える 1

2


JPanel can = canvas;という行があります。

新しい JPanel オブジェクトを作成していません。あなたが作っているのは、canvas も指しているのと同じ JPanel オブジェクトを指すことです。Canvas は単に JPanel のメモリアドレスへのポインタです。事実上、can と canvas はまったく同じ JPanel です。それらを個別に変更できるようにする場合は、新しい JPanel インスタンスを作成します。

于 2013-02-25T08:16:42.350 に答える