public - みる会図書館


検索対象: UNIX MAGAZINE 1996年9月号
11件見つかりました。

1. UNIX MAGAZINE 1996年9月号

連載 / プログラマー入門ーの リスト 6 import import public Checkbox と CheckboxGroup を使ったサン カレ・プログラム Java ・ applet ; Java. awt . *; class checkbox public void init ( ) リスト 7 import xmport public Choice 吏ったサンプル・プログラム java ・ applet ; 」 ava. awt . * ; —test extends App1et add(new Checkbox ( " checkbox 1 " ) ) ; add(new Checkbox ( " checkbox 2 " ) ) ; 住ロ区 Ho い sv 工 0 0 を日創み第 図 7 Checkbox と CheckboxGroup の表示 return ; (stat)); showStatus(1abe1. concat(" is " ) . concat flag. toString() ; String stat ・ getLabe1() ; String label ( (Checkbox) evt. target) public boolean action(Event evt , Object what) add(new Checkbox("box5" ,cg,false) ) ; add(new Checkbox("box4" ,cg,false)) ; add (new Checkbox ( "box3" , cg , true) ) ; CheckboxGroup cg = new CheckboxGroup ( ) ; class checkbox—test extends AppIet { public void init() public boolean action(Event evt , add(choice) ; choice . addItem("choice3") ; choice . addItem("choice2") ; choice . addltem("choicel"); Choice choice = Choice() ; 日し 厩ツ 0 : 加「 eck 斗は ・個別のチェックポックスにチェックを入れる (check- boxl 、 checkbox2) ・複数個のチェックポックスのうちの 1 つを選ぶ ( b 。 x 3 、 box4 、 box5) の 2 不鶤頁を含んたイ列です。どれかのチェックポックスの状 態か変わるたびにイベントが発生して、 action メソッド かま行されます。 図 7 は、、、 b 。 x3 " をチェックしたときのプラウサ画面で 98 Obj ect item—name) 図 8 Choice を使った表示 return true ; showStatus ("Choice : " + (String) item_name) ; ch 朝 0e2 chote3 chccel UNIX MAGAZINE 1996.9 したときのメッセージか表小されています。 ともあります。ステータスラインには、、、 choice2" を jü, 尺 プラットホームやプラウサの不頁によっては別の形式のこ プラウザではドロップダウン・リストになっていますが、 図 8 は、 、、 choice2" お尺する途中の状態です。この 生し action メソッドか起動されます。 ーザーが Choice のどれかの項目を選ぶと、イベントか発 リスト 7 は、 3 つの項目から選ぶ Choice 刎列です。ュ Choice す。ステータスラインの表示にも着目してください。

2. UNIX MAGAZINE 1996年9月号

連載 / プログラマー入門ーの リスト 13 フレームにメニューを追加するプログラム String title) import j ava ・ applet ・ App1et ; import 」 ava. awt . * ; class myFrame extends App1et applet ; public myFrame (App1et mouseDown(Event evt , public boolean resize(400,200) ; setTit1e(tit1e) ; applet = apt ; Frame { apt, String title) setCursor(Frame . CROSSHAIR_CURSOR) ; int x , int y) applet . showStatus ( "Mouse C1icked : true ; class myMenu extends App1et applet ; public myMenu(App1et super(title) ; applet = apt ; Menu apt , public boolean postEvent (Event evt) applet . showStatus ( "Menu Se1ected : ” + evt . arg) ; return true ; で作ります。この段階では、メニ け表小する、項目カ啌つほ。のメニューができます。 menul . add( "C10ne Window" ) ; ーに FiIe" とだ は、 Menu オプジェクトにメニュー項目を順番に追加し ます。ここではメニュー項目として、 Window のような文字列しか設疋していませんが、 Menu オプジェ クトをメニュー項目として追加すれば、カスケード・メ は、メニュー項目をう嶽頁するために引く線です。 menul . addSeparator ( ) ; ニューだって、はいはいっと作れちゃいます。 104 public class ftest extends App1et { public void init() myFrame f て ame new myFrame (super , "N0tJava Browser" ) ; frame . show() ; MenuBar mb = new MenuBar ( ) ; frame . setMenuBar(mb) ; Menu menul = new myMenu("FiIe") ・ add("Quit"); . add("C10se") ; . addSeparator ( ) ; add("Send. . add("Print . add( "Save . . addSeparator ( ) ; . add( "Open Document. add( "Open Page" ) ; addSeparator ( ) ; add( "C10ne Window" ) ; menul . menul menu 1 menul . menul menul . menu 1 menu 1 menul . menul . menul . mb. add(new Menu("View") ) ; mb. add(new Menu("Edit") ) ; mb . add(menul) ; mb. add(new Menu("He1p")); mb. add(new Menu("P1aces") ) ; UNIX MAGAZINE 1996.9 イベントカられてくるメソッドてす。 7 調解されやすい名前てすが、 postEvent はイベントを送るのではなく、 リスト 13 のプログラムでは、ウインドウ内でマウスが にしています。 の文冽をアプレットのステータスラインに表小するよう postEvent か呼び出されたら、選択されたメニュー項目 トを受け取れるようになります。 myMenu クラスでは るので 7 、このメソッドを定義すれはフ。ログラムがイベン べントが発生すると postEvent メソッドか平び出され 生するイベントをどうやって受け取るか・・・・・・ですね。イ 気になるのは、ユーザーがメニューを選んだときに発 メニューを尺したら何が起きる ?

3. UNIX MAGAZINE 1996年9月号

連載 / プログラマー入門ーの リスト 8 List を使ったサンカレ・プログラム import j ava ・ applet ; lmport 」 ava. awt . * ; public class list—test extends App1et List 1ist ; public VOid init() list = new List (3,true) ; list . addltem("listl"); list . addItem("Iist2"); list . addItem("Iist3"); list . addItem("1ist4"); add(list) ; add(new Button( "push" ) ) ; リスト 9 ScroIIbar を吏ったサンカレ・プログラム import j ava ・ applet ; import j ava. awt . * ・ public class scrollbar—test extends AppIet { Scr011bar sc; public void init ( ) setLayout (new BorderLayout ( ) ) ; new Scr011bar (Scr011bar. HORIZONTAL , S C 40 , 10 , 0 , 100 ) ; add("North",sc) ; add("Center" ,new Button("push") ) ; public boolean action(Event evt , Object what) showStatus ( "Va1ue : " + sc. getVa1ue ( ) ) ; return true ; public boolean action(Event evt, Object what) String items ロ list . getSe1ectedItems() ; String item—names for (int i = 0 ; i く items . length; i + + ) { item_names item_names . concat (items[i] ) . concat(" " 十 item_names) , 図 10 Scrollbar を使った表示 日しイん計颪耐 / 0 ル新を は、リストの横に自重加勺にスクロールバーカ咐きます。 リストの項目をマウスでクリックしても action メソッ ドか呼び出されないので、リスト 8 のプログラム例では、 右隣のボタンカ甘甲されたときに List の状態を調べるよう List にしています。 リスト 8 の List も 3 つの項目から選ぶ GUI パーツで listl" と、、 list3" を j 尺して、、 push" ボタ 図 9 は、 すが、 List のはうが Choice よりも豊富なメソッドカ甘是 ンを押したときの例です。リスト中の尺された項目が自 供されています。 List オプジェクトを作るときに指定し 重加勺に反転しているのが分かりますか ? ている引数は、一引判勺に表示できる項目の数と、複数の項 目を j 尺できるようにするかどうかの指定です。 Scrollbar list = nev List(3,true); Scrollbar は、垂直または水平方向のスクロ ーを ーノレノヾ 項目数が多すぎて、すべての項目を表示できない場合に 作ることができます。 showStatus("List : 図 9 List を使った表示 HotJava(tm) Browser 1. ロ preBeta 1 File Edit Vlew Places Help : たノ川」をは耐 URL: 0- 新 1 3 2 第 V 部北 : 40 List: 1 3 99 UNIX MAGAZINE 1996.9

4. UNIX MAGAZINE 1996年9月号

連載 / プログラマー入門ーの リスト 3 import import public ボタンを表示するアプレットのソース Java ・ applet; 」 ava. awt . * ・ class button_test extends App1et { public void init() 図 4 ボタンを表示するアプレット add(new Button ( "Button add(new Button()) ; Jav 矼。ヨ、 0 田山 = ~ 住ロ区 証、 , 塢を 1 」日 h 2 ステータスラインに関する約束があるわけではありませんが、通常はプラ ません。 1 もちろん、ボタンラベルカ祠じボタンを arg 引数て区別することはでき ツが発生するイベントはすべて action メソッドに届くよ action メソッドは汎用的に言 fr されていて、 GUI パー します。 メソッドは、指定された文字列をステータスラインに表示 ラムです ( 図 5 ) 。 action メソッドのなかの showStatus ときに、その番号をステータスライン 2 に表示するプログ リスト 4 は、 2 つのボタン「 1 」または「 2 」カ甘甲された されたのかを判断してください 1 をいくつか並べたときには、砒・ 9 を調 , ヾてどのボタンか胛 ト、。にはボタンラベルの文字列か渡されます。ボタン e 眦厩には発生したイベントを表す Event オプジェク boolean action(event, 四 ) スは次のようになります。 受け取ってください。 action メソッドのインターフェイ イベントは、アプレットに action メソッドを定義して 96 ウサ分一番下の行てす。 リスト 4 import import public public void init() class button—test extends App1et { java. awt . *; Java ・ applet ; ける ボタンか押されたイベントは action メソッドで受 R しをに加祕記新」 : h ツ日心。ゾゞ厖 0 第 図 5 押されたボタンの番号を表示するアプレット return true ; showStatus ( "Button Labe1 : ” + (String) arg) ; public boolean action(Event evt , Object arg) add(new Button("2") ) ; add(new Button("1")) ; onL 1 ' UNIX MAGAZINE 1996.9 めの部品で、 めの部品、 TextArea は複数↑丁のテキストを入力するた TextFieId は 1 行ぶんのテキスト文字列を入力するた ています。 テキスト入力用には、 2 不頁の GUI パーツが用意され テキスト入力フィールド パーツの不頁によって違うので主意が必要です。 目の引数 ( さきほどの説明では arg) に届くものは、 GUI てイベントを受け取ってください。なお、 action の 2 番 GUI パーツを使ったときには、 action メソッドを追加し うになっています。ボタン以外にもイベントを発生させる

5. UNIX MAGAZINE 1996年9月号

連載 / プログラマー入門ーの リスト 10 Canvas クラスを使ったサンカレ・プログラム import 」 ava. awt . * ; import java ・ applet . Applet ; class myCanvas extends Canvas { String label ; public myCanvas(String lbl,int width' int height) リスト 9 では、水平方向 (Scrollbar. HORIZONTAL) のスクロールバーを作っています。 new Scr011bar(Scr011bar . HORIZONTAL, 40 , 10 , 0 , 100 ) ; おしまいの 4 つの数字の未が分かりづらいのですが、 前から順に 「つまみ」の位置の値 「つまみ」の幅 ・スクロールバーの最小値 ( 左端のイ ・スクローノレヾーの去を大 ( 右端の値 ) です。 図 10 は、スクロールバーの「つまみ」を動かしてボタン を押したときの表示てす。スクローノレヾーを動かしただけ では action メソッドか夫行されないので、リスト 9 のプ ログラムでは、ボタン 5 カ甘甲されたときにスクローノレヾー public class canvas—test extends Applet { の値を読むようにしています。 public void init() Canvas add(new myCanvas("Canvas 1 " ,size() . width, size() . he 土 g / 2 ) ) ; 最後の Canvas は単独では表示していても、存在にすら add(new myCanvas ("Canvas 2 " ,size() . width, size() . height/2)) ; 気づいてもらえない寂しいパーツです。しかし、この GUI パーツ上には、イメージ、文字列、矢研彡や円などの基本的 なグラフィックスを描画できるものもあるので、なかなか Canvas による表示列 図 11 役に立ちます。 リスト 10 は Canvas の使用例です。ボタンなどのパ File Edit View Places Hel ーツのように add メソッドで登録しただけでは、何も表 : ん : 加た聞 v 齢」汁驫 u 日し 示されないので、この例では Canvas クラスを継承する myCanvas で文字と去研彡を描画しています。 myCanvas は再描画か要求されたとき (paint メソッドか呼び出され たとき ) に、 ・キャンバスを囲研彡 ・指定された文字列 の 2 つをキャンバス上に描きます。 アプレット (canvas-test) がおこなう処理は、初期化 時に、 myCanvas オプジェクトを 2 つ作って、 add メ ソッドで当求しているだけです。 このアプレットを表示させると、図 11 のようになりま す。 5 スクロールバーの下に貼り付いている大きな四角形ゞボタンてす。 S C 1abe1 = 1b1 ; resize(width,height) ; public void paint(Graphics g) g. drawRect(), 0 , size() . width-l, size() . height-l) ; g. drawString(1abe1, 10 , size() . height/2 + 5) ; HotJava(tm) B 「 0 e 「 1. ロ preBeta 1 C 印齢第 2 自動レイアウト これまでの例では、登録した GUI パーツの位置をプロ グラム中で明カ勺に指定していません。それでも、左禺 に貼り付いたり重なったりせすに、それなりに配置されて います。これは、アプレットの自動レイアウト機能のおか 100 UNIX MAGAZINE 1996.9

6. UNIX MAGAZINE 1996年9月号

applet = apt ; setTit1e(tit1e) ; res 土 ze ( 400 , 200 ) ; setCursor (Frame. CROSSHAIR_CURSOR) ; public class frame—test extends App1et public VOid init() Frame frame = myFrame (super , "N0tJava Browser" ) ; frame . show ( ) ; 図 15 frame-test クラスで作成したウインドウ 十 Warnin : A letWindow をプログラムで指定することかできます。 ・カーソル廾爿大 UNIX MAGAZINE 1996.9 れでは、なぜわざわざ myFrame クラスなんて作ったの ジェクトを作っても、ちゃんとウインドウカ鯛きます。そ メソッドのなかで、 myFrame の代わりに Frame オプ 試してみればすぐ分かりますが、 frame-test の init() また、図 15 はこのプログラムで作ったフレームです。 スを定義して、クロスへア・カーソルを設疋しています。 リスト 12 では、 Frame を継承する myFrame クラ 連載 / プログラマー入門ーの リスト 12 フレームを作るプログラム import j ava ・ applet ; import j ava. awt . * ; class myFrame extends Frame { App1et applet ; メニューが付けば一人前のウインドウ public myFrame (App1et apt , String title) でしよう ? その答はイベントにあります。、、マウスを押した " など のイベントは、ウインドウに対して送られます。つまり、 アプレット上でマウスをクリックしたときのイベントは frame-test に送られますが、フレームのウインドウ上で クリックすると Frame にイベントか送られるので、プロ グラムカ授け取れません。そこで、 myFrame を作ってイ べントを受け取れるようにしたのです。 同しことがさきほどの Wind 。 w クラスについてもいえ ます。リスト 11 のプログラムでは、ウインドウ上で発生 したイベントをつかまえることができないのです。イベン トについては、次節でもうすこし詳しく説明しましよう。 できます。また、メニューバーには、複数のメニューをも ーを 1 つだけ付けることが たせることかできます。 フレームには、メニュ Menu クラスを定義して、 myMenu クラスでイベント に対して送られるので、 こでも Menu を継承する my- たときに発生するイベントは、メニュー・オプジェクト の手順で作ります。ただし、ユーザーがメニューを尺し 3. Menu バーに Menu オプジェクトを登録する 2. Menu オプジェクトにメニューの項目を」助日する 1. Menu オプジェクトを作る メニュー / ヾーーヒのメニューは、 frame. setMenuBar(mb) ; MenuBar mb = new MenuBar ( ) ; の出来上がりです。 MenuBar() で設疋すれば、とりあえす空のメニューバー クトで実現しています。これを Frame に対して set- Java では、メニューノヾーを MenuBar オプジェ て、メニューの作り方を説明しましよう。 を作るプログラムを示しました。このプログラムを使っ リスト 13 に、、 NotJava Browser" ウインドウ ( 図 13 ) Menu menul = new myMenu("Fi1e") ・ File メニューは、 を受け取ることにしましよう。 103

7. UNIX MAGAZINE 1996年9月号

連載 / プログラマー入門ーの リスト 5 テキスト入力のサンカレ import j ava. applet ; import j ava. awt . * ; App1et { public class text—test extends TextFie1d tf ; TextArea ta; Button btn; public void init() add((tf=new TextFie1d("Text Fie1d") ) ) ; add( (ta=new TextArea("Text Area" , 3 , 40 ) ) ) ; add( (btn=new Button ( "push" ) ) ) ; 図 6 TextArea に入力してボタンを押すとメッセー ジを表示する Ho を , ム v 気を ) “ 10 を日を始。十、要ーー可一。 Text Fieid は奪。出加 public boolean action(Event evt , Ob 」 ect arg) if (btn. equals(evt . target)) { showStatus ( "Text Area : + ta. getText ( ) ) ; } else { showStatus ( "Text Fei1d : " + tf . getText ( ) ) ; 表 3 GUI / ヾーツー覧 クラス名 ラベル文字列 Label Button ボタン 1 行ぶんのテキスト入力 TextField 複数行ぶんのテキスト入力 TextArea Checkb ox チェックポックス 複数窈尺肢から 1 つを選ぶ Choice ・入力領域にあらかじめ設定しておく文字列 リストから j 尺する List Scrollbar スクローノレヾー ・入力領域のサイズ ( カラム数、行数 3 ) 描画などのための画布 Canvas を指定できます。この 2 つの GUI パーツの基本的な ・ボタンか胛されたら、 TextArea の内容を取得してス はほとんど同じですが、 テータスラインに表示する ・ TextField ・で攵行を入力すると action メソッドか呼び という乍をします。図 6 は、 このプログラムを表示した 出される 例です。 ・ TextArea て攵行を入力しても action メソッドは呼び 出されない GUI パーツたちょ、集まれ の違いがあるため、イベントの受取り方が異なります。 TextArea に入力したテキストは、なにかのタイミングで ラベル、ボタン、テキストフィールドについて使い方と アプリケーションが自分から受け取りにいかなくてはなり プログラム例を紹介しました。もちろん、 Java の GUI ません 4 。 パーツはこオけごけではありません。でも、この調子て残り の GUI パーツを説明していくと 1 万年くらいかかりそう リスト 5 は、 2 種類のテキスト入力用 GUI'S—ツを なので、ほかのものについては表 3 と簡単なサンフ。ル・プ もったアプレットのソースコードで、 ログラム、プラウザでの表乃イ列を参考にしてください。 ・ TextField て改行か胛されたら、 TextFieId の内容を ステータスラインに表示する C heckb ox 3 行数を指定できるのは TextArea だけてす。 リスト 6 は、 4 ああ、めんどくさい。どなたか、もっといい去を知りませんか ? 機能 return t rue ; 97 UNIX MAGAZINE 1996.9

8. UNIX MAGAZINE 1996年9月号

図 2 日し : Ho を 日のラベルを新すると文字化けする 連載 / プログラマー入門ーの を 0 砂秘”工 0 を日 e ねい ル : た飛畆 ei ラベルのフォントをキ諚したアプレットのソース j ava ・ applet ; Java. awt . *; class font-test extends App1et { public void init ( ) public import lmport リスト 2 図 3 ラベルのフォントを変更 add(new LabeI("HeIvetica")) ; Font . BOLDIFont . ITALIC,20)) ; setFont (new Font ("He1vetica" add(new LabeI("Defau1t") ) ; リ日い / C : れ新漸」 new Font ( ルれ t れ ame , style, size) でオプジェクトを作ります。引数にはそれぞ ・ルれ腕 ame : フォント名 ・ style : フォントスタイルを表す Font. BOLD 、 Font. ITALIC 、 Font. PLAIN のピットマスク ( 論理和 ) ・ size : フォントサイズ ( 単位はポイント ) を指定します。 setFont は、 GUI ノヾーツの親クラスである Compo- nent クラスのメソッドです。 Label だけでなくあらゆる GUI パーツで利用できるので、有効に活用してください。 setFont は、以下の形式で呼び出します。 setFont ( ルれ t ) ただし、れ t は Font クラスのオプジェクトです。 たとえは、リスト 1 の標勺なフォントと、 20 ポイント のポールド・イタリック体の Helvetica フォントのラベ ルを表示するプログラムは、リスト 2 のようになります。 図 3 は、このプログラムの表示列です。 ボタンツールの扱い方は、表示するところまではラベル に似ています。 Button クラスには揃えの指定はありま せんが、ボタン上に表示する文字列 ( ボタンラベル ) は設 定できます。表 2 に Button クラスのおもなメソッドを 示します。 ボタン UNIX MAGAZINE 1996.9 : Def 凱 村可冊 t た a 表 2 Button クラスのおもなメソッド Button() Button(str) setLabel(str) getLabel() ボタンラベルが成疋されていないボタン を作る ボタンラベルが str のボタンを作る ボタンにボタンラベル str を設定する ボタンラベルの文哢冽を取得する ボタンのサイズは、デフォルトではボタンラベルの大き さで決まります。リスト 3 で作成したボタンは、図 4 のよ うに表示されます。 ボタンが押されたのを知っているかい ? ところで、ラベルとボタンには大きな違いがあります。 そう、ボタンはユーザーの操作 ( ボタンか胛された ) を受 け取らないといけないのですね。けれども、表 2 には、ポ タンカ甘甲されたときの処理に関係するメソッドか載ってい ません。 ューサーの操作、つまり GUI パーツに対して発生した 95

9. UNIX MAGAZINE 1996年9月号

連載 / プログラマー入門ー⑩ リスト 14 ファイ尺ダイアログ・ポックスを作るプログラ 図 16 file-test クラスで作成したファイルダイアログ・ポ ム import j ava ・ applet ; import j ava. awt . * ; public class file—test public void init ( ) Fi1eDia10g fdialog extends App1et { new FiIeDiaIog ックス Fiie O 抦 - 、る ge ロ fd 村 、みを上 d ” . を x をへのシにトルト かどうか コもョ第を xe コ」・ v も - g. ・ x を 、 j ョ v 3 目 ー、 j 物 v . d 、 m 庁飛 d は d 日 、 m dia ・ d 、 0 mdll (new Frame ( ) , "Fi1e Dia10g") ; fdialog. setDirectory("c: \jdk\java\bin") ; fdialog. show() ; クリックされたときのイベントも受け取るようにしていま す (myFrame クラスの mouseDown メソッド ) 。この ように、イベントの受取り方は、部品の不鶤頁によって違う ので、ドキュメントを読んで正しいメソッドを作るように してください。 「あれえー、おかしいなあ。どうして、キーポード入力 かできないんだろう ? 」 「ん一、そりや、キーポード入力用のメソッドを書いてな ダイアロク・ポックス いからだよ」 UNIX MAGAZINE 1996.9 ダイアログ・ポックスで扎 8 同しアプリケーション」こでしたイベントを、すべて网 ( りしてしまう ・モーダル・ダイアログボックス 8 にするかどうか ダイアログ・ポックスのタイトル の 2 不職頁です。どちらのダイアログ・ポックスも、 ・ファイル尺ダイアログ・ポックス (FiIeDialog) ・ダイアログ・ポックスの素 (Dialog) いまのところ Java カ甘是供しているのは、 にできます。 を使えば、その牛を自分 (Java プログラマー ) のもの スを表示するのは、プラウサク喆でした。しかし、 Java ァイルを読み込むときにファイル用のダイアログ・ポック とカ起きたときにダイアログ・ポックスを表示したり、フ WWW プラウサ上てイ可かューザーにしてもらいたいこ GUI パーツを、もう 1 不貢慮えておいてください。 ・ダイアログ・ポックスのサイズを変更できるようにする FileDialog は Dialog の子クラスで、 を設定できます。 な機能をもっているのです。 する普通のファイル〕尺ダイアログ・ポックスと同じよう を指定することかできます。つまり、いつも皆さんが目に ・ファイノレ名のフィノレタ ・ファイル名の初其垪直 ・ディレクトリ 105 ( あらい・みちこ ASTEC) ラスライプラリの残りをまとめて紹介しましよう。 ドウを作れるようになりましたね体当かな ! ? ) 。次回はク ふー、これでやっと、アプリケーションっほいウイン ☆ イアログ・ポックスの表列です。 るプログラムの例です。また、図 16 は、ファイル j 尺ダ リスト 14 は、ファイル選択ダイアログ・ポックスを作 ラスを継承して自分で用意してください。 石忍用ダイアログ・ポックスを使いたけれは、 DiaIog ク いいえの ません。メッセージを表示したり、 、、はい ころファイル j 尺ダイアログ・ポックスしか用意されてい 残念ながら、簡単に利用できるものとしては、いまのと

10. UNIX MAGAZINE 1996年9月号

連載 / プログラマー入門ーの げです。もっと正確には、 Applet のおしいさんクラスに あたる Container クラスがもっている、 GUI ノヾーツを 自重加勺にレイアウトする欟冓のおかげなのです。 add で当求された GUI パーツは、標準では登録された 順番で、、左から右へ上から下へ " のルールに従って配置 されます。しかし、 ・既存のレイアウトクラスを設定する ・独自のレイアウトクラスを作成して設定する のどちらかの手段で、レイアウトのルールを変更すること もできます。 リスト 1 のラベルの表示や、リスト 9 のスクローノレヾー を表小するアプレットのプログラムで登場した、 setLay- out メソッドを振り返ってみてください。たとえば、 setLayout (new GridLayout ( 3 , 1 ) ) という行は、既存の GridLayout レイアウトクラスをア プレットに設疋しています。つまり、アプレットに add メソッドで追加された部品は、 GridLayout のルールに 従ってアプレット上に配置されます。 表 4 は、 Java のクラスライプラリカ甘是供しているレイ アウトクラスの一一・覧です。また、図 12 は、各レイアウトク ラスを使ってボタンを配置したときの例です。 CardLay- out はボタンが 1 つしか表示されていませんが、表示され ているボタンの奧にほかのボタンか重なっていると考えて ください。 Java のウインドウを楽しむ これまで紹介してきた GUI パーツだけでは、 HTML のフォームでできることとあまり違いがありません 6 。 「なーんだ。これだけしかできないの ? せつかく苦労し てプログラムを書いたってのに」 そんなふうに思った方は、ますは図 13 を見てください。 HotJava のウインドウに似ているような気がしますが、 ウインドウの下のはうには、 Warning: Applet Window 6 もっとも、 HTML でま Canvas 上でアニメーションを動ル、すなんて ことはできませんが。 UNIX MAGAZINE 1996.9 表 4 レイアウトクラス一覧 クラス名 FlowLayout BorderLayout CardLayout GridLayout GridBagLayout レイアウトのルール 左から右、上から下べ頂番に配置する 上・下・左・右、中央の 5 カ所のエリ アク旨定した位置に配置する トランフ。の山をめくるように、部品を 配置したエリアが前後に重なってお り、そのうちの 1 つだけがつねに表示 されている 行列状の桝目の指定した位置に配置す る GridLayout の機能を拡張したもの。 桝目のサイズや桝目のなかの配置の揃 えなどを指定できる リスト 11 新しいウインドウを作るプログラム import 」 ava ・ applet ; lmport 」 ava. awt . * ; public class win—test extends App1et { public void init ( ) Window win = new Window (new Frame ( ) ) ; win. resize(400,200) ; win. show() ; の文字列が・・ 。それに、よくよく見ると、ウインドウ のタイトルも、 HotJava Browser" ではなく、 NotJava Browser" になっています。しつは、これは Java でイ乍っ たウインドウです。次はいよいよ、 Java でプラウザのは かにウインドウを作ってみましよう。 W ⅲ dow はシンプルすぎて味気ない しつは、たんに新しいウインドウを作るだけならとても 簡単です。リスト 11 を見てください。 init() メソッド中 の 3 行て図 14 に示したようなウインドウカ非られます。 1 行目の、 Window win = new Windov(nev Frame ( ) ) ; は、 Window オプジェクト win を作ります。 2 行目の、 win. resize(400,200) ; は、ウインドウサイズの言です。この行は省略してもか まいませんが、その場合には、プラウザによってはウイン 101