GO HOME

「Visual Cafe ver.3で学ぶJavaプログラミング入門」追補情報


※ここは、拙著のJava入門書「Visual Cafe ver.3で学ぶJavaプログラミング入門」(技術評論社、432頁CD-ROM付、3280円)に関するコーナーです。現在、初版の見直し作業をしていますが、校正情報やよくある質問の答えなどをここでまとめて掲載します。



 ★バグ情報★

※ここでは、ソースコードや内容に関する記述間違いについて整理しておきます。が、現在までのところ致命的な間違い(?)や、間違いにより意味がわからなくなっているような部分は幸いまだ見つかっていません。



※P37 下から4行目

「JFC Applet」→「JFCアプレット」

用語の記述ミスです。Visual CafeではJFCのJAppletをベースにしたアプレットのプロジェクトを「JFCアプレット」と呼び、プロジェクトの作成ダイアログなどでもそのように表示しています。が、本書を執筆しているときに使用していたベータ版では、名称が「JFC Applet」と英語表記であったため、そのままになってしまいました。以後、「JFC Applet」という表示は全て「JFCアプレット」と読み替えて下さい。



※P78 1行目〜3行目

 java.awt.Font font1;
 font = new Font("Dialog", Font.Plain,48);
 label1.setFont(font);
   ↓
 java.awt.Font font1;
 font1 = new Font("Dialog", Font.Plain,48);
 label1.setFont(font1);

これは、インスタンス宣言しているfont1がfontとクラス名になっているという単純な記述ミスです。おそらくほとんどの方は見てすぐに気づいたことと思いますが、校正時に見逃していました。



P138 (4)の項目

checkbox1 を radioButton1 に。

P139 (6)の項目

checkbox2 を radioButton2 に。

以上、radioButtonをcheckboxと記述した誤植です。



P173 (4)の図

オーバーライドするメソッドが「paint」ではなく「print」が選択されています。正しくは「paint」を選択です。これは本文と図が違っているので、本文のほうを読めば間違えることはないかと思いますが…。



 ★FAQコーナー★

※ここでは、本書の内容についての質問にお答えします。読んでいて不明な点などありましたら、どうぞ掌田津耶乃までお問い合わせください。その場合は、必ずお使いのOSとVisual Cafeのバージョン/エディションについて明記ください。



●7-2のJTreeの説明で、途中からフォームデザイナの機能が聞かなくなってしまいます。ボタンなどを新たに追加しようとすると「必要なタグが失われています」というエラーが起きてしまうのですが。

答え)これは、どうやらDefaultMutableTreeNodeのインスタンス宣言を書く場所に問題があるようです。おそらく、多くの人は//{{DECLARE_CONTROLSタグ部分にインスタンス宣言を追記していると思いますが、これを、タグの前に移動してみて下さい。すなわち、

 DefaultMutableTreeNode root = new DefaultMutableTreeNode("this is root.");
 DefaultMutableTreeNode nodeA = new DefaultMutableTreeNode("this is NodeA.");
 DefaultMutableTreeNode nodeB = new DefaultMutableTreeNode("this is NodeB.");
 DefaultMutableTreeNode nodeA1 = new DefaultMutableTreeNode("No,1");
 DefaultMutableTreeNode nodeA2 = new DefaultMutableTreeNode("No,2");
 DefaultMutableTreeNode nodeB1 = new DefaultMutableTreeNode("No,1");
 DefaultMutableTreeNode nodeB2 = new DefaultMutableTreeNode("No,2");
 DefaultTreeModel TModel = new DefaultTreeModel(root);
 
 //{{DECLARE_CONTROLS
 com.sun.java.swing.JTree JTree1 = new com.sun.java.swing.JTree();
 //}}

このようにするわけです(initメソッドなど関連ないコードは除いてあります)。当方では、このようにすることで問題を回避できました。
 どうやら、//{{DECLARE_CONTROLSタグはAWTやSwingなどのGUIコンポーネントのインスタンス宣言の場合に使われますが、DefaultTreeModelのように、コンポーネント内部に組み込まれた抽象的なクラスのインスタンス宣言のコードを追記されるとタグの解析がうまくいかなくなることが多いようです。
 本書にも書いてありますが、Visual Cafeの2 way方式はタグを使ってコード解析を行なっているため、自分でコードを書き換えるようになると、ちょっとしたことでGUIのフォームデザイナがうまく認識してくれなくなります。これはVisual Cafeが悪いというのではなく、JBuilderなど他のタグ解析によるRAD環境でも大なり小なり抱えている問題で、いわばタグ解析方式の宿命と思ったほうが良いでしょう。ですから、フォームデザイナはあくまでGUIを簡単に設計できる補助機能で、GUIが完成したら、後は全てコードを直接書いて開発する、というように割り切って考えたほうがよいかと思います。私自身も、コードの書き換えに入ったら、フォームデザイナはほとんど触りません。



●55ページでAWTアプレットのプロジェクトを保存すると作成されるファイルについて書いてありますが、プロジェクトを保存したところ、「autogen…」というHTMLファイルが作成されません。これはどうすれば作られるのですか。

答え)このHTMLファイルは、作成したアプレットを呼び出すために作られるものです。これは、プロジェクトを保存したときではなく、保存後、最初にプロジェクトを実行した際に作られます。ですから、保存後、「実行」メニューを選んでプロジェクトを動かしてみて下さい。終了後、再度ファイルを確認すれば、HTMLファイルは作成されているはずです。



●249ページでJSplitPaneの左右にJPanelを組み込みレイアウトをすると、配置したボタンなどの部品が勝手に再配置されてしまい、本の図のようにきれいにならべられないのですが。

答え)なぜレイアウトが変わってしまうかといえば、それは組み込んだJPanelのレイアウトマネージャが、デフォルトでFlowLayoutに設定されているからです。本書では、レイアウトを見やすくするために、組み込んだJPanelのLayoutプロパティをnoneに変更してあるのですが、それについて記述を忘れていました。大変失礼しました。従って、本書の図と同様に自由なレイアウトをしたい場合は、組み込むJPanelのLayoutを変更して下さい。



●JTableの説明で、CellEditorというのを定義することで更に高度な表現が可能になるとありましたが、その具体的な説明がないのでどのようにすればいいのかわかりません。何か参考になる資料などはありませんか。

答え)JTableのCellEditorについては、ごく単純なポップアップタイプのDefaultCellEditorを使う例だけにとどめておきました。CellEditorは本格的に使おうとすると、それだけで数十頁もの解説が必要となります。このため、Visual CafeとJavaの入門的意味合いの強い本書では、その導入部だけにとどめました。
 JTableとCellEditorについては、「SwingによるJava GUIプログラミング II」(カットシステム、大村忠史・著、3200円)にかなり詳しい説明があるので参考にされるとよいでしょう。この本は1と2があり、1に基本的なSwingの説明が、2にJTableを中心とした説明があります。また、最近になってJava2の解説書が少しずつ出てきていますので、それらを参考にされるとよいでしょう。



●JTabbedPaneのTitles設定で質問です。235ページの手順通りにJTabbedPaneを作成し、Titlesプロパティを設定すると、エラー表示が出てしまいます。

答え)現在リリースされているバージョンのVisual Cafeでは、JTabbedPaneのTitlesプロパティを設定する場合、各タブ表示用のコンポーネントがいくつ組み込まれているかでタイトルの設定個数をチェックしているようです。このため、全くコンポーネントを 組み込んでいない状態でTitlesを設定するとエラーが生じます。
 が、値を設定するコードそのものは組み込まれていますので、そのまま気にせずに作業を進め、JPanelを組み込めば、正常にタブのタイトルが表示されるかと思います。
 きちんとエラーが起きないように作業を進めたい場合は、235ページの手順で、まず最初に3の作業を行なってJPanelを組み込んでから、2のTitlesプロパティを設定するようにしてみて下さい。




GO BACK
GO HOME