Report6
		Day :2003/12/08
                ID  :035740F
		Name:根保光秀
		!!!  This Page Is Made By Shift JIS  !!!




   1.偶数奇数判定プログラム(GUIaa)をタイプし、その動作を考察せよ。
  2.例外処理について、考察せよ。
   3.上記のサンプルプログラムに出てきたGUI部品を、全て使ったプログラムを作成せよ。
   4.摂氏から華氏、華氏から摂氏への温度換算ができるプログラムを作成せよ。
   5.「電卓」プログラム。中身は自分の思うように。




もくじ

1.GUIaaの考察

2.例外処理

3.GUIプログラム

4.温度換算プログラム

5.電卓

6.反省・感想













3.GUIプログラム


choiceで歌手名を選択し、ボタンを押すとTextAreaに
txtファイルの内容(歌手のプロフィール)が表示されるプログラム
○プログラム
[Mi:eclipse/workspace/rep#6] j03040% java List Reggae.java
File name:Reggae.java
 1:/*
 2: * @day: 2004/01/04
 3: * @author j03040
 4: * @ST-ID  035740F
 5: */
 6:import java.io.*;
 7:import java.awt.*;
 8:import java.awt.event.*;
 9:public class Reggae extends Frame implements ActionListener,
 10:ItemListener{     //ActionListerとItemListenerを実装
 11:    Button    b0=new Button("Show!");     //GUI部品の生成
 12:    Label     x0=new Label("the Graet Reggae Singers!");
 13:    Label     x1=new Label("Genre");
 14:    Label     x2=new Label("Singer");
 15:    TextField t0=new TextField("Singer Name");
 16:    Checkbox[]  c0=new Checkbox[] {new Checkbox("roots",true),new Checkbox("Dub",true)};
 17:    List       l1 = new List();     
 18:    TextArea  t1 = new  TextArea();
 19:    Choice    c1 = new Choice();
 20:    public Reggae(){
 21:            setLayout(null);
 22:            add(b0);b0.setBounds(300, 350, 60,30);
 23:            b0.addActionListener(this);     
 24:        add(x0);x0.setBounds(50,40,70,40);
 25:        add(x1);x1.setBounds(40,300,100,20);
 26:        add(x2);x2.setBounds(100,300,100,20);
 27:        add(t0);t0.setBounds(250,300,100,10); 
 28:            for(int i=0; i<2; i++) {
 29:                    add(c0[i]); c0[i].setBounds(40, 330 + i*25, 60, 20);
 30:            }//Choiceの中身を追加
 31:            c1.add("Bob Marley");c1.add("BlackUhuru");    
 32:            c1.add("Peter Tosh");c1.add("Burning Spear");
 33:            c1.add("King Tubby");c1.add("Lee Pelly");
 34:            c1.addItemListener(this);
 35:            add(t1); t1.setBounds(30,80, 300, 200);
 36:            add(c1);c1.setBounds(100,330,60,30);
 37:            //add(l1);l1.setBounds(200,112,355,55);
 38:            t1.append(" Singer profile\n \n");
 39:            t1.append(" choose singer name \n");
 40:            t1.append(" and push show Button!\n");
 41:    }
 42:    public static void main(String[] args) {
 43:            Frame aaa= new Reggae() ;
 44:            aaa.setSize(400,400);
 45:            aaa.setVisible(true);
 46:            aaa.setResizable(true);
 47:            aaa.setTitle(" The Great Reggae Singers!");
 48:            aaa.addWindowListener(new WindowAdapter() {
 49:                                            public void windowClosing(WindowEvent evt) {
 50:                                                    System.exit(0);
 51:                                            }
 52:                            }); 
 53:    }
 54:    public void actionPerformed(ActionEvent e) { 
 55:            String[] txt={"bob.txt","uhuru.txt","tosh.txt","spe.txt","king.txt","lee.txt"};
 56:            if (c1.getSelectedIndex()==0)Input(txt[0]);
 57:            else if(c1.getSelectedIndex()==1)Input(txt[1]);
 58:            else if(c1.getSelectedIndex()==2)Input(txt[2]);
 59:            else if(c1.getSelectedIndex()==3)Input(txt[3]);
 60:            else if(c1.getSelectedIndex()==4)Input(txt[4]);
 61:            else if(c1.getSelectedIndex()==5)Input(txt[5]);
 62:            else t1.setText("Please choose Singer!");
 63:    }
 64:    public void itemStateChanged(ItemEvent e) { 
 65:            String name;
 66:            int a=c1.getSelectedIndex();
 67:            t0.setText(c1.getItem(a)); 
 68:    }
 69:    public void Input(String argv){      //ファイルの中身を読み込む
 70:            t1.setText(" ");
 71:            try {
 72:                            String s;
 73:                            int a=0;
 74:                    FileReader fr = new FileReader(argv);
 75:            BufferedReader in = new BufferedReader(fr);
 76:                            while ((s=in.readLine())!=null) {
 77:                                    t1.append(s+"\n");
 78:                                a++;
 79:                            }
 80:
 81:                            in.close();
 82:                    }catch(Exception e){
 83:                        t1.setText("Error!! \n"+e.toString()); 
 84:                    }
 85:    }
 86:}
 87:


○実行結果


○考察

9:行目でActionListenerと ItemListenerを実装しています。
こうすることで、複数あるボタンやChoiceのイベントをいちいち無名クラスで
宣言せずに一か所にまとめることができます。
無名クラスで書くと、イベントの処理がバラバラになりコードがとても見ずらくなるので
同じGUI部品が複数あるときはこう言う風にしたほうが、良いと思います。
無名クラスのかわりに引数にthisを指定するところに気をつけて下さい。

16:行目でCheckBoxを配列で宣言しています。
こうすると、部品の配置や処理がfor文等で処理できます。
同じ部品がたくさんあるときはこうやって宣言すると楽になります。
30:行目でChoiceの中身を入れていっています。
入れ方はadd(String)です。

37行、、、、Listの謎
なぜか、Listを登録する事ができません。
コンパイルすらできません、コンパイルすると
[Mi:eclipse/workspace/rep#6] j03040% javac GUIb.java
GUIb.java:23: シンボルを解決できません。
シンボル: メソッド add (List)
場所    : GUIb の クラス
                add(l1); l1.setBounds(10, 120, 80, 100);
                ^
GUIb.java:23: シンボルを解決できません。
シンボル: メソッド setBounds (int,int,int,int)
場所    : List の クラス
                add(l1); l1.setBounds(10, 120, 80, 100);
                           ^
GUIb.java:24: シンボルを解決できません。
シンボル: メソッド add (java.lang.String)
場所    : List の クラス
                l1.add("Hello!"); l1.add("How are you?");
                  ^
GUIb.java:24: シンボルを解決できません。
シンボル: メソッド add (java.lang.String)
場所    : List の クラス
                l1.add("Hello!"); l1.add("How are you?");
                                    ^
エラー 4 個


と言われてしまいます。
サンプルプログラムでも、友達のプログラム(完成品)
をコンパイルしてみてもなぜかListの所でエラーが発生します。
原因が不明なので、今回Listは使えませんでした。

54:行、ボタンが押されたときのイベントは
actionPerformedが検出します。このプログラムの処理は
ファイルの中身を読み込むメソッドInputを呼び出しています。
引数にはファイルの名前を指定します。

64行、はchoiceのメンバを選択したときのイベントを検出しています。
ここの処理は、選択したメンバをTextFieldに表示すると言うものです。

74行のやつは、ファイルアクセスする時の決まり文句です。
ファイル操作する時には必ず書かなければダメです。
呪文なのでそっくり覚えてしまいましょう。
FileReader fr = new FileReader(argv);
BufferedReader in = new BufferedReader(fr);

83行、エラー処理はエラーの種類を表示しています。
















4. 温度変換プログラム

使い方は、TextFieldに整数を入力
摂氏ならCボタンを華氏ならFボタンを押す
すると変換された温度が表示される。
表示される温度は、整数で小数点以下は切り捨てられる。

○プログラム
ココをクリック
○実行結果










5.電卓プログラム
整数を入力
四則演算ボタンを押す
結果が出る
○プログラム
ココをクリック
○実行結果










6.感想・反省

疲れました、計算機とか適当です。
まぁ計算できるからいいかな?って感じです。
考察も3番でほとんどやってるからやらないで良いかなって感じです。
大晦日までバイトを入れてた自分が悪いんですが
時間がなかったです。はい。
もうちょっと上等な計算機が作りたかったです。
暇があれば作り直したいと思います、暇があれば