jframe.getContentPane().add(button); と書く必要があります。
しかし、書くだけでも機能することがわかりました
jframe.add(ボタン);
2 つのアプローチの違いは何ですか? JFrame.getContentPane().add(button); と書くのが有利ですか? ?
それは好みの問題です。私は常に getContentPane().add(..) を使用します。これは、実際に何が起こっているのかを読みやすく、理解しやすいと思うからです。
これを試して........
Java 1.5 が登場する前は、 jframe.getContentPane().add(button) が使用されていました.....そしてそれが合法的な方法でした....
しかし、Java 1.5 以降では、myframe.add(button)... もそれを行う合法的な方法の 1 つとして含まれていました。それと 同じように、Classname を使用して静的変数にアクセスすることは、それを行う正当な方法です。 ..しかし、クラスインスタンスを使用して静的変数にアクセスすることはできます...
JButton
したがって、などの要素をメソッドJTextArea
に追加する必要があることを知っておく必要がContainer
あります。
getContentPane()
Container
このフレームのオブジェクトを返します。したがって、どちらのアプローチも同じように機能しますが、2 番目のアプローチを使用する必要があります。
多くの要素を含む大きなアプリケーションがある場合、最初のアプローチは読みにくく、2 番目のアプローチが一般的に推奨されます。
違いは次のとおりです。
Jframe.add() - 指定されたコンポーネントをこのコンテナの末尾に追加します。これは Container.addImpl の便利なメソッドです。
のクラスjavadocはJFrame
、これについてかなり明確です
JFrame クラスは Frame とは少し互換性がありません。他のすべての JFC/Swing トップレベル コンテナと同様に、JFrame には JRootPane が唯一の子として含まれています。ルート ペインによって提供されるコンテンツ ペインには、原則として、JFrame によって表示されるすべての非メニュー コンポーネントを含める必要があります。これは、AWT フレームの場合とは異なります。便利な add とそのバリアントとして、remove と setLayout がオーバーライドされ、必要に応じて contentPane に転送されます。これは、次のように記述できることを意味します。
frame.add(child);
そして子が contentPane に追加されます。