2002 -0829 ver 1.00 発行 -0830 ver 1.10 サンプル名称の整理,誤字の修正 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃.&&&& **** %%%%.  JavaScript&Javaで目指そう!基本情報技術者試験  ┃ ┃&&&&&&******%%%%%%  執筆&編集 斎藤末広 suehiro@he.mirai.ne.jp  ┃ ┃'&┃&''*┃*''%┃%'  発行    江口昌宏 jmaga@yscon.co.jp    ┃ ┗━┻━━┻━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ★解除・登録 :http://www2.odn.ne.jp/~egu33/jmaga/java-maga.html ★広告募集  :http://www2.odn.ne.jp/~egu33/jmaga/jmaga-ad.html ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  第25号 2002/08/29  GUI 部品 TextField(テキストフィールド,テキスト枠) ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  プログラムを作成する上での注意事項:  Windows98SE, SDK(JDK) 1.3.1,IE 5.5 を前提としています。  拡張子を表示するに設定してください。 ------------------------------------------------------------------------ ▼Label(ラベル)とTextField(テキストフィールド,テキスト枠)  前号では,文字を表示するするために Label(ラベル) を扱いました。この号で は,文字を入力してもらうための GUI 部品として,TestField(テキストフィール ド)を扱います。TestField(テキストフィールド)は,テキスト枠とも呼ばれます。 ------------------------------------------------------------------------ ▼TextField(テキストフィールド)のサンプル  前号の xSmpGUI41 を元にして,TextField のサンプルを作成しましょう。  まず,xSmpGUI141.java をみましょう。 例 j24-02 xSmpGUI041.java Label(ラベル)表示 ソース http://www.yscon.co.jp/j/java/jmaga/j24/xSmpGUI041.java 動作  http://www.yscon.co.jp/j/java/jmaga/j24/xSmpGUI041.htm 1: import java.applet.Applet; 2: import java.awt.Button; // 1)ボタンの見た目を作る 3: import java.awt.event.ActionEvent; // 2)ボタンの動きを感じる 4: import java.awt.event.ActionListener; // 3)押されたときに仕事をする 5: import java.awt.Label; 6: 7: public class xSmpGUI041 extends Applet{ 8: 9: Button xbt01 = new Button("行きの挨拶"); // 表ボタン生成 10: Button xbt02 = new Button("帰りの挨拶"); 11: 12: Label xlbl = new Label("漢234567"); 13: 14: class xButtonAdapter implements ActionListener{ 15: public void actionPerformed(ActionEvent xbs){ 16: if (xbs.getSource() == xbt01){ 17: xlbl.setText("行ってらっしゃい"); //ボタン01の仕事 18: } 19: if (xbs.getSource() == xbt02){ 20: xlbl.setText("お帰りなさい"); //ボタン02の仕事 21: } 22: } 23: } 24: 25: xButtonAdapter xia = new xButtonAdapter(); //ボタン係生成 26: 27: public void init(){ 28: 29: add(xbt01); //表ボタンを本体プログラムの画面に貼付 30: add(xbt02); 31: 32: xbt01.addActionListener(xia); 33: xbt02.addActionListener(xia); 34: 35: add(xlbl); 36: } 37: }  このプログラムを変形して,ボタンを押したら,TextField(テキストフィール ド) に入れた文字を Label(ラベル) にそのまま表示するプログラムにします。ボタ ンは,一つにします。 プログラムは次のようになります。 例 j25-01 xSmpGUI05.java GUI 部品 TextField(テキストフィールド) ソース http://www.yscon.co.jp/j/java/jmaga/j25/xSmpGUI05.java 動作  http://www.yscon.co.jp/j/java/jmaga/j25/xSmpGUI05.htm 1: import java.applet.Applet; 2: import java.awt.Button; 3: import java.awt.event.ActionEvent; 4: import java.awt.event.ActionListener; 5: import java.awt.Label; 6: 7: import java.awt.TextField; // 輸入 8: 9: public class xSmpGUI05 extends Applet{ 10: 11: Button xbt = new Button("コピー"); 12: TextField xtxt = new TextField("",14); // 1) テキストフィールド生成 13: Label xlbl = new Label("       "); 14: 15: class xButtonAdapter implements ActionListener{ 16: public void actionPerformed(ActionEvent xbs){ 17: xlbl.setText(xtxt.getText()); // 3) 値の取得 18: } 19: } 20: 21: xButtonAdapter xia = new xButtonAdapter(); 22: 23: public void init(){ 24: 25: add(xbt); 26: xbt.addActionListener(xia); 27: 28: add(xtxt); // 2) 表示&文字列受付 29: add(xlbl); 30: } 31: }  TextField(テキストフィール) の使用の仕方は,  1) 生成   TextField xtxt = new TextField("",14);  2) 表示&文字列受付   add(xtxt);  3) 値の取得・設定 xtxt.getText() で可能です。 ------------------------------------------------------------------------ ▼GUI部品 TextArea(テキストエリア)  TextField(テキストフィールド) は,一行のみの入力枠です。この入力枠を複 数行にしたものが,TextArea(エリア) です。  TextArea(テキストエリア) の内容を別の TextArea(テキストエリア) にコピー するプログラムは,次のようになります。 例 j25-02 xSmpGUI06.java GUI 部品 TextArea(テキストエリア) ソース http://www.yscon.co.jp/j/java/jmaga/j25/xSmpGUI06.java 動作  http://www.yscon.co.jp/j/java/jmaga/j25/xSmpGUI06.htm 1: import java.applet.Applet; 2: import java.awt.Button; 3: import java.awt.event.ActionEvent; 4: import java.awt.event.ActionListener; 5: 6: import java.awt.TextArea; 7: 8: public class xSmpGUI06 extends Applet{ 9: 10: Button xbt = new Button("コピー"); 11: 12: TextArea xtxtArea01 = new TextArea("",5, 40); // 1) テキストエリア生成 13: TextArea xtxtArea02 = new TextArea("",5, 40); 14: 15: class xButtonAdapter implements ActionListener{ 16: public void actionPerformed(ActionEvent xbs){ 17: // テキストエリア1からテキストエリア2に複写 18: xtxtArea02.setText(xtxtArea01.getText()); // 3) 値の取得・設定 19: } 20: } 21: 22: xButtonAdapter xia = new xButtonAdapter(); 23: 24: public void init(){ 25: 26: add(xbt); 27: xbt.addActionListener(xia); 28: 29: add(xtxtArea01); // 3) 表示 30: add(xtxtArea02); 31: } 32: }  TextArea は,TextField とほぼ同様の扱いです。  1) 生成   TextArea xtxtArea01 = new TextArea(5, 40);  2) 表示   add(xtxtArea01);  3) 値の取得・設定 xtxtArea01.getText()   xtxtArea02.setText() です。  このプログラムの画面の配置がかっこ良くありません。この配置をよくする 方法は,また別の号で扱います。 ------------------------------------------------------------------------ ▼ TextField(テキストフィール) と TextArea(テキストエリア)  TextField と TextArea は,1行を扱うか,複数行を扱うかの違いだけでした。 このようにほぼ同様の仕事をするクラスは,親のクラスが同一の場合が多いです。 事実,TextField と TextArea は,ともに,TextComponent(テキストコンポーネ ント) という親を持ちます。  setText(), getText() は,TextComponent クラスで定義されている仕事名(メ ソッド名)です。TextField クラスと TextArea クラスは,親である,TextComponet クラスのメソッドである,setText() と getText() をそのまま利用しています。 ------------------------------------------------------------------------ ▼ TextComponet クラスの親の Componet クラス  Botton クラス,Label クラス,TextComponent クラスは,兄弟のクラスで,親 がともに,Component クラスです。 親←→子 Componet  Button  Label  TextComponet TextArea TextField の関係があります。  Componet クラスの仕事(メソッド)の中には,前面(文字など)の色を設定したり, バックの色を設定したりする,setForeground() と setBackground() がありあす。 親のものは,子供が引き継ぎますので,このメソッドは,子供である,Button, Label,TextArea,TextField で利用可能となります。  xSmpGUI06 に色を設定して,xSmpGUI061 にします。 例 j25-03 xSmpGUI061.java GUI部品 色付け ソース http://www.yscon.co.jp/j/java/jmaga/j25/xSmpGUI061.java 動作  http://www.yscon.co.jp/j/java/jmaga/j25/xSmpGUI061.htm 1: import java.applet.Applet; 2: import java.awt.Button; 3: import java.awt.event.ActionEvent; 4: import java.awt.event.ActionListener; 5: 6: import java.awt.TextArea; 7: import java.awt.Color; 8: 9: public class xSmpGUI061 extends Applet{ 10: 11: Button xbt = new Button("コピー"); 12: 13: TextArea xtxtArea01 = new TextArea("",5, 40); 14: TextArea xtxtArea02 = new TextArea("",5, 40); 15: 16: class xButtonAdapter implements ActionListener{ 17: public void actionPerformed(ActionEvent xbs){ 18: xtxtArea02.setText(xtxtArea01.getText()); 19: } 20: } 21: 22: xButtonAdapter xia = new xButtonAdapter(); 23: 24: public void init(){ 25: 26: xbt.setForeground(Color.white); // ボタンの文字の色設定 27: add(xbt); 28: xbt.addActionListener(xia); 29: 30: xtxtArea01.setBackground(Color.yellow); //地の色設置 31: add(xtxtArea01); 32: xtxtArea02.setBackground(Color.pink); //地の色 33: xtxtArea02.setForeground(Color.red); //文字の色 34: add(xtxtArea02); 35: } 36: } ------------------------------------------------------------------------ ▼ 親子関係,それぞれの仕事は  TextField の親はだれか,そして,それぞれどんな仕事ができるのかは,Java 関係の書籍等で確認できます。また,java を提供している,サンマイクロシス テムズ社のサイトに Javaのマニュアル(手引き書 )が公開されています。 JavaTM 2 Platform, Standard Edition, 1.4.0(日本語) http://java.sun.com/j2se/1.4/ja/docs/ja/api/index.html 親←→子 Componet http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/awt/Component.html  Button  http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/awt/Button.html  Label  http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/awt/Label.html  TextComponet  http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/awt/TextComponent.html TextArea   http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/awt/TextArea.html TextField   http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/awt/TextField.html 注意  Jマガでは,JDK 1.3 を利用しています。しかし,サンマクロシステムズ社の 上記サイトは,JDK 1.4 の内容です。最新のバージョンのマニュアルは,過去の 内容も併せて解説をしていますので,最新のマニュアルで確認することをおすす めします。 ------------------------------------------------------------------------ ▼ 練習問題 練習1  xSmpGUI06.javaを変形します。下のテキストエリアにコピーするときに,さら に「上記の内容は,複写されたものです」という文を自動的に追加しなさい。 追加する仕事(メソッド)をサンマイクロ社のサイトから探しなさい。 ヒント:TextComponent クラスの仕事(メソッド)です。 練習2  xSmpGUI041.java を変形します。Label(ラベル)を追加して,表示するときに,  ○○さん,いってらしゃい。という風にしなさい。"○○さん,"は,最初から 表示しておきます。 応用1  xSmpGUI06.java を変形します。テキストエリア内の改行は,\n という記号で 表わされています。xtxtArea01 の内容に行番号をつけて,xtxtArea02に表示さ せなさい。  完成:http://www.yscon.co.jp/j/java/jmaga/j25/xSmpGUI07.htm  ヒント:xtxtArea01 の中身は,String 型です。 ------------------------------------------------------------------------ ▼ 次号の予定  次号は,チェックボックスを扱います。  感想は,斎藤まで,suehiro@he.mirai.ne.jp  広告等のお問い合わせ:jmaga@yscon.co.jp ------------------------------------------------------------------------ ▼ 誤字・脱字等の修正,プログラムの修正など,以下の場所で確認できます。 Jmaga情報  http://www.yscon.co.jp/j/java/jmaga/ 登録・削除および広告の案内  http://www2.odn.ne.jp/~egu33/jmaga/java-maga.html ------------------------------------------------------------------------ ▼ 著作権について  このメールマガジンで公開しているプログラムソースは,著作権を当方スタッ フが所有しますが,商用を含めて,再利用,改変,発表を制限しません。  本文に関しては,斎藤末広が著作権を所有します。再利用に関しては,承諾を 必要とします。 広告募集 http://www2.odn.ne.jp/~egu33/jmaga/jmaga-ad.html ------------------------------------------------------------------------ ▼アンケート(以下を返信してください)  この号のJマガに対するご意見をお待ちしてます。ぜひ,ご返信下さい。 内容のレベルは 1 難しいのでもっと簡単にしてほしい 2 ちょうどよい 3 もっと難しくてもよい その他ご要望