土曜日, 5 3 月 2005
| Tiger -J2SE 5.0- の新JFrame |
|
|
5.0以前のJFrameなどではフレーム自体にadd()でコンポーネントを追加すると実行時にエラーが発生し、getContentPane()でコンテントペインを取得しそれに対してadd()を呼べと怒られてしまう。
add()に限らずsetLayout()もフレームに対して直接呼び出すと同様にエラーが発生する。
代わりにgetContentPane()で取得できるコンテントペインを使用すればいいのだが、使用する場面が多いとコードが冗長になってくるし何よりも面倒くさい。
だが5.0のJFrameではフレームに対してadd()を呼び出すとプロキシとして動作し、呼び出しがコンテントペインに転送されるためそのままコンポーネントを追加することが可能である。
5.0以前のJFrameでは
ただ5.0になりコンテントペインが無くなったわけではなくsetBackground()などは対象がフレームになっているのでメインコンポーネントの背景色を変更する場合はコンテントペインから呼び出す必要があるため注意が必要だ。
add()に限らずsetLayout()もフレームに対して直接呼び出すと同様にエラーが発生する。
代わりにgetContentPane()で取得できるコンテントペインを使用すればいいのだが、使用する場面が多いとコードが冗長になってくるし何よりも面倒くさい。
だが5.0のJFrameではフレームに対してadd()を呼び出すとプロキシとして動作し、呼び出しがコンテントペインに転送されるためそのままコンポーネントを追加することが可能である。
5.0以前のJFrameでは
JFrame frame=new JFrame("test");
Container contentPane=frame.getContentPane();
contentPane.add(new JButton("test"));
と書いていた部分が5.0では
JFrame frame=new JFrame("test");
frame.add(new JButton("test"));
と書くことが出来る。ただ5.0になりコンテントペインが無くなったわけではなくsetBackground()などは対象がフレームになっているのでメインコンポーネントの背景色を変更する場合はコンテントペインから呼び出す必要があるため注意が必要だ。
Posted by at 3:12 午前 in Java/






