3

Head First Javaを読んでいます。GUI を紹介するとき (本をお持ちの方は 354 ページ)、著者は次のように書いています。

frame.getContentPane().add(button);

「フレームに直接物を追加することはありません。フレームを窓の周りのトリムと考えてください。窓ガラスに物を追加します。」

JFrame の Java API エントリを見た後、JFrame が Component のサブクラスであり、Component から add(Component) を継承していることがわかったので、単純に次のように記述します。

frame.add(button);

本が frame.getContentPane.add(button) の使用を推奨しているのはなぜですか?

前もって感謝します!

4

1 に答える 1

6

JFrame を呼び出すことはできadd(...)ますが、実際にgetContentPane().add(...)は JFrame API に従って呼び出すことであり、「シンタックス シュガー」とも呼ばれます。ただし、これを行う場合、実際には JFrame に直接追加するのではなく、contentPane に追加していることを理解してください。JFrame/トップ レベル ウィンドウの Swing チュートリアルで説明されているように、JFrameはコンポーネントの組み合わせで構成されているため、これは重要です。

私自身、getContentPane().add(...)JFrame のすべての動作がこのように機能するとは限らないため、リテラルを好みsetBackground(...)ます。

于 2013-04-03T01:02:08.833 に答える