});AWTの改良版であるSwingは、プラットホームを選ばず、かつユーザーインターフェイスの手軽な開発を実現する技術として利用されています。Swingだけでは実現できない機能もあり、この場合はAWTのパッケージである「java.awt」をインポートする必要があります。java.awt.*;」を宣言していますが、これは避けましょう。java.awt.BorderLayout;」というように、用いるクラスを個別に宣言しましょう。例として、下記のプログラムを作成しました。Swingの基本であるフレームを生成して、メニューおよびレイアウトを設定し、パネルを貼り付けるという簡単で基本的なサンプルです。トラブル要因を含んでいるプログラムところがこのプログラムを実行すると不思議な現象が起こります。メニューをクリックしてもメニュー項目が表示されないのです。コンパイルエラーはもちろんのこと、例外も一切発生しません。プログラムの実行結果(メニュー項目が表示されない)実は、このトラブルは、たった1文字のタイプミスにより発生しました。パネルを生成し追加」の「Panel」の前に「J」を打ち忘れただけなのです。javax.swingパッケージに含まれるJPanelクラスに対して、java.awtパッケージに含まれるPanelクラスは、継承関係や動作が近いため、間違って用いても、この構文ではコンパイルエラーになりません。それどころか、実行すると動作してしまい、SwingとAWTの実装の違いがあるにも関わらず例外を起こしません。実行してメニューをクリックしてもアイテムが表示されないため、パネルの記述ミスとは気づかず、メニュー関連の記述に間違えがあると考えてしまいやすいのです。これが長いプログラムの場合、ミスをした場所を探すのは「至難の業」かもしれません。java.awt.*」を避けるとミスは防げるこの問題が発生した遠因は、AWTパッケージに含まれているBorderLayoutクラスに対応するクラスがSwingにないことにあります。java.awt.BorderLayout;」としてあれば、Panelクラスはインポートされないため、トラブルは回避できたわけです。具体的には下記に示すように、プログラミングまたはコンパイルの時点でエラーになり、タイプミスに気づくことができます。java.awt.*;」を避けることがミス防止とトラブル解消に効果的だといえるでしょう。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。