GO HOME

「JBuilderではじめるJavaプログラミング入門」追補情報


※ここは、拙著のJava入門書「JBuilderではじめるJavaプログラミング入門」(秀和システム、366頁CD-ROM付、3200円)に関するコーナーです。現在、初版の見直し作業をしていますが、校正情報やよくある質問の答えなどをここでまとめて掲載します。

※これから購入しようと考えておられる方へ。
現在、本書は見直し作業を進めており、2002年秋にver. 7対応の改訂版として再出版する予定です。ここではMac OS XおよびWindows XPをベースとした形で書き直してあります。内容的にも、ファイルアクセス・スレッド・日付計算・オブジェクト配列といった事柄についてまとめた章を追加してあります。



 ★バグ・校正情報★
※ここでは、ソースコードや内容に関する記述間違い、校正ミスなどについて整理しておきます。かなり細かい修正が出てきました。多くは2刷より修正されているとは思いますが、お手元の本と比較して、大変お手数とは思いますが修正をしてお読み下さい。


※社名変更に伴なう修正

JBuilderの開発元であるインプライズ社は、2001年1月26日よりボーランド社と社名を変更しました。これに伴い、ホームページのURLも、「http://www.borland.co.jp/」に変更されています。
 本書では、ライセンスキーの登録などをCD-ROMに付属のHTMLファイルにてホームページに移動し、行えるようになっていますが、URLの変更により、従来のURLではアクセスできなくなります。上記のURLに直接アクセスし、JBuilderのライセンス登録を行なうようにして下さい。


※P52 1つ目の図版

キャプションに「四角い枠線の部分が…」とあるのに、枠線が図につけてありません。本来は図のリスト表示されている部分に「void jButton1_actionperformd …」という行を囲むように枠線がつけられています。

 

※P64 リストのifの条件部分

「if (x % 2 = 0)」 → 「if (x % 2 == 0)」

条件の比較の==と代入の=が混同されて書かれています。ここは当然==となるべきでした。

 

※P116 ページ中央付近から次ページにかけて

「perseInt」 → 「parseInt」

なぜか、このあたり1ページほどにかけての部分だけ、parseIntが全てperseIntになっています。まあ、多用されるメソッドですから皆さんお気付きとは思うのですが…。

 

※P218 3行目のshowConfirmDialogのフォーム説明

「《JOptionPane》.showMessageDialog …」 → 「《JOptionPane》.showConfirmDialog …」

showConfirmDialogのフォーム説明なのに、なぜかshowMessageDialogとなっています。読んで一瞬混乱した人もいるかと思いますが、これは書き間違いです。 219ページのフォームのまとめ部分も同様に書き間違っています。

 

※P242 2つ目のリスト4行目

「if ((x >= 0) …」 → 「if ((x > 0) …」

removeElementAtの条件部分で、0まで取りのぞきの処理がなされています。これは当然ですが1つまでしか実行はできません。

※P242 真ん中付近

「0以上項目数以下」 → 「0以上項目数未満」

項目数以下だと、項目数そのものは含まれてしまいます。正しくは項目数は含まれません。
 

※P248 リスト6-1-9 paintComponentメソッド2行目

FontMetrics fm = this.getGraphics().getFontMetrics();
  ↓
FontMetrics fm = g.getFontMetrics();

ソースコードの間違いが見つかりました。といっても、このままでも別にエラーにはなりません。getGraphicsでGraphicsを取り出してgetFontMetricsを呼び出していますが、このメソッドではパラメータで既にGraphicsが渡されていますから、わざわざgetGraphicする必要はありません。P250のリストの一部を参照している部分では修正されていますから、おそらくリスト部分だけ古いソースか何かをうっかり使ってしまったのでしょう。

 

※P243 下から9行目

「jList1.setModel(jListModel1);」 → 「DefaultListModel jListModel1 = new DefaultListModel();」

参照の場所が間違っていました。その後に同じ行を参照しているので変に感じた方もいることでしょう。

 

※P287 リスト6-4-3 二重のforの後にあるif内のString作成部分

「String s[] = new String[rnum];」 → 「String s[] = new String[cnum];」

列の数だけの要素を持った配列を作成している部分ですが、なぜか列数ではなく行数の変数rnumが使われています。これでは動作がうまくいきません。かなりコードの動作に関係する部分ですのでこれは大変申し訳ありませんでした。

 

※P289 下から4行目

「…getSelectedRowsでは{2,3,4}といった…」 → →「 …getSelectedRowsでは{1,2,3}といった…」

2〜4行が選択されていれば、配列は0から始まりますから1〜3番目が選択されていることになります。これもケアレスミスでした。

 

※P291 下から3行目

「charをStringにするのはキャストの指定だけですみますが・・」の部分

この部分、とても唐突なように感じたことでしょう。直前に、charからStringを得るのにメソッドを使う、という説明をしたすぐ後ですから。――この前に、「実は、charをStringにするには、メソッドなんて使わなくてもいいんですよ」という説明が入るべきなのです。
 例えば、char型変数aがあるとき、「String x = "" + a;」というようにすればaのStringが変数xに得られます。そういうこともあるので、「charからStringを得るには、メソッドなんて使わない方法もいろいろあるけど、その逆は常になんらかのメソッドが必要ですよ」という説明につながる、のでした。

 

●校正ミス●

※P20 1つ目の図版の後3行目 「3.5の新機能」 → 「ver. 4の新機能」

※P44 表の中 「フィル」 → 「ファイル」

※P50 1-4-4 7行目 「Anyware」 → 「Anywhere」

※P81 2-2-7 2行目 「〜みめしょう」 → 「みましょう」

※P82 5行目 「方」 → 「型」

※90 3-1-1 6行目 「untitled.prj」 → 「untitled1.prj」

※P91 最下行 「Applet.java」 → 「Applet1.java」

※P112 3-2-5 5行目 「ActionLister」 → 「ActionListener」

※P115 1つ目の図版の次行 「数字と文字の変換(フォント)」 → 「数字と文字の変換(キャスト)」

※P122 乱数を返す「Random」 → 「random」

※P127 setLocationのまとめの例 「setBounds」 → 「setLocation」

※P239 手順4 「…を組み込みましょうインスペクタの…」 → 「…を組み込みましょう。インスペクタの…」

※P243 6-1-7 7行目「JListには、各項目の内容を…」 → 「JListには、各項目の表示内容を…」

※P243 中央付近 「暮らす変数」 →「クラス変数」

※P280 最後の「働き」2行目 「TreeSelectionListener」 → 「TreeExpansionListener」

※P283 6-4-2 2行目 「…をして別の処理に…」 → 「…をして別のセルに…」

※P288 リスト後2行目 「…実際に競るに…」 → 「…実際にセルに…」

※P342 まとめの「働き」部分 「…ウィンドウの最小化/… → 「…ウィンドウのクローズ/…」

※P342 「例」部分 「….setRresizable…」 → 「….setResizable…」

 

※現在まで確認できた間違いは以上です。もし、他に間違いが見つかりましたら、どうか御連絡下さいませ。



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

 


●作成したアプレットがWebブラウザで動きません!

答え)JBuilderでアプレットを作成し、自動生成されたHTMLをWebブラウザで開いてみても、アプレットが実行されずエラーが表示されて驚いた人も多いことでしょう。――これは、Swingを使ったアプレット(すなわちJApplet継承のもの)であるためです。現在、IEなどのWebブラウザではJava2はサポートされておりません(Netscape 6ではサポートされました)。このため、そのままでは動かないのです。AWTベースのアプレットであれば、問題なく動きます。
 ではSwingのアプレットは使えないのか、というとそういうわけでもありません。Swingアプレットを動かすには、一般的には「Java Plug-in」を利用します。Java Plug-inというのは、Webブラウザなどで独自のJava機能を使ってアプレットを実行するためのものです。
 これは、Java2(JDK 1.2以降)がインストールされていれば自動的に組み込まれます(コントロールパネルに「Java Plug-in」という項目が追加されるのでわかります)。またJDKをインストールしていない環境でも、Sunのサイトからプラグインだけをダウンロードすれば使えるようになります。
このプラグインを使ってアプレットを実行するには、通常のAppletタグではなく他のタグを書く必要があります。これは、かなり複雑なタグになってしまうため、自分で記述するのは難しいでしょう。
 Sunでは、通常のAppletタグを使ったHTMLファイルを自動的にプラグイン対応に書き換える「HTML Converter」というプログラム(Java2で作られています)をフリー配付しています。Sunのサイトからダウンロードして、これを使ってHTMLファイルを変換して利用するのがよいでしょう。

Java Plug-in及びHTML Converterのアップロード先:
http://java.sun.com/products/plugin/ (※日本語ページも用意されています)


●JBuilderをインストールする段階でエラーが起きてインストールができません!

答え)これには要因はいくつか考えられます。まず、もっとも多いのが、Windows 98 SE以前のものを使っているというケース。Javaは、JDK 1.2(Java2)以降、IME 98がインストールされている場合にはIME 98 Service Releaseでアップデートしていないとうまく動きません。
 また、比較的多いだろうと思われる要因に、ATOK等複数のInput Methodが組み込まれているという場合です。これは読者の方から御報告いただきました。ATOKをいったん外してインストールするとインストールできたとのことです。この他、Windows 2000でログインに全角名を使っている場合なども問題が発生するそうです。
 JBuilderのインストールエラーについては、開発元であるインプライズ(現在、ボーランドと社名変更)のサイトにもFAQがありますので、そちらも参照して下さい。

インプライズ(現ボーランド)のJBuilder関連URL:
http://www.borland.co.jp/jbuilder/


●作ったプログラムがJBuilderでうまく動きません。JDKでは問題なく動くのですが…。

答え) まだはっきりと原因はつかめてないのですが、「JDKでは動くのにJBuilderでエラーが出る」というような現象に遭遇したという報告が複数届いています。私自身、ビジュアルデザイナでエラーが出るが実行すると動く、というような現象に出くわしたことがあります。プログラム自体はJDKで問題なく動いているのに、JBuilderでは何かのエラーが出る、ということは稀にあるようです。
 もしプログラム的に間違ってはいないのにJBuilderでエラーが出た、という場合は、JDKでコンパイルと実行ができるか確認してみて下さい。それで問題なく動けば、JBuilderの問題かも知れません。


●第4章で作ったMyPanelがうまく動きません。

答え) 「プログラムが動かない」という質問の内、半数以上がMyPanel関係でした。その多くに共通するのは、「プロジェクトを実行」メニューで動かしていた、ということです。HTMLファイルを開き、JBuilderのペイン内に表示して動かしてみると問題ない、ということのようです。
 どうも、「プロジェクトを実行」だと動かないというケースがけっこうあるようです。確実な原因ははっきりしていないのですが、「プロジェクトの実行」だとJBuilderに内臓のappletviewerによってアプレットが実行されます。これに問題があるのでは?と思うのですが…。とりあえず、HTMLを内容ペインで開いて動作確認をして下さい。


●作成したJavaのプログラムを配付したいのですが、一番適した方法はどんなものですか?

答え)アプレットであれば、オンラインで使えますが、アプリケーションの場合はそうはいきません。またアプリケーションは多数のクラスファイルからなるのが普通ですし、MS-DOSプロンプトからJavaコマンドで実行しないといけません。これでは普通の人にはちょっと使えません。
 現在、Javaアプリケーションの配布でもっともよいと思うのは「Javaアーカイブ」を利用した方法です。Javaアーカイブとは、Javaの専用アーカイブ(圧縮)ファイルで、JARというコマンドで作成します。また、Java2からは、「Excutable Java Archive File」というものがサポートになっています。これは、Java2 SEやJRE(java Plug-in)がインストールしてあるWindowsマシンでは、EXEファイルのようにダブルクリックでJavaアプリケーションが起動できるようになるという仕組みです。
 このExcutable Java Archive Fileの作り方については、このホームページの入門講座のコーナーにあるJavaの入門講座に、「番外編・Excutable Java Archive」として説明してありますので、そちらを御覧下さい。


●ファイルの読み込みと保存を行ないたいのですが、本書を読んでも記述がありません。どうすればできますか?

答え)この種の「○○に関する記述がないので教えて欲しい」というお問い合わせは非常に多くあるのですが、残念ながら全てにお答えすることはできません。「後は、他のもっと詳しい本を探して勉強して下さい」としか御返事できません。
 Java(Java2)は、非常に多くの機能を持った言語です。本書で説明をしてあるのは、基本文法と、「Swing」と呼ばれるGUIライブラリの概略だけです。Java2の全ての機能について一通り説明するには、おそらく数千ページが必要となるでしょう。それぐらい、Java2は膨大な機能を持っているのです。
 本書は、そのほんの触りだけを説明し、「Javaの世界というのがどんなものか、そのプログラミングはどのようなものか」という基礎について理解しよう、という主旨で執筆しました。ですから、「これ一冊でJavaの一通りがマスターできる」とは思わないで下さい。本書を了読したところで、ようやくスタート地点にたった、とお考え下さい。


●図を見ていると、なんだか内容ペインの下のタブ表示がうちのJBuilderと違っているようです。うちのには「履歴」というタブがついています。CD-ROMに収録されているver. 4 Foundation版をインストールしたのですが。

答え)これは、おっしゃる通りです。本書はもともとver. 3.5の本として執筆していたのですが、出版の直前になって4が登場し、急遽書き換えたという経緯があります。その際、図版に関しては、表示が違っているものは全て取り直しましたが、細かな違いしかなく、ほぼ同じような画面はそのまま3.5の図を使うことにしました。このため、よく見るとver. 4の画面とは微妙に違っているものもあります。が、それらは全て操作や説明とは関係ないような些末な部分だけですので、学習に影響が出ることはないと思っています。どうぞご了承下さい。


●まだ途中まで読んだところですが、switch構文の説明が変な気がします。breakを入れないと、ジャンプしたcase以降にあるcaseの値を1つずつチェックしていくような動作をするように読めるんですが、これは変じゃないですか?

答え)これは、ちょっと気づきませんでした。自分ではそういうつもりで書いたわけではないのですが、読み返してみると、確かにそう受け取れるかも知れないですね。switchは、単にcaseのラベルへとジャンプするだけの働きしかしません。ですから、breakがないと、その後のcaseにある文を全てずら〜〜〜っと実行していってしまいます。…まあ、breakしないswitchを書くことなんてまずありませんから、そこまで意識することはないでしょうが…。


●プロジェクトペインや内容ペインなどの「ペイン」と、getContentPaneで得られる「ペイン」とは別のものなのですか。ペインという用語が何種類も出てきて混乱します。

答え)これは、確かにおっしゃるように混乱の元となっているかも知れません。ただ、そういう名前になってしまっているので、こればかりはなんとも…。
 もともと「Pane」という英語は「四角い区画」といった意味ですから、そうした区画のようなオブジェクトは全部「なんとかペイン」とつけてしまってるんでしょう。プロジェクトペインのように、一種のインターフェイスとして扱われるペインは感覚的にわかりやすいでしょうが、コンテントペインは見えないものですから、それで「これは特殊なペインなのか?」という感じで考えてしまうのかも知れません。あまり細かく考えず、「四角い領域の部品はみんなペインと呼んじゃってるのだ」と大雑把にとらえた方がいいかも知れませんね。


GO BACK
GO HOME