Day :2003/12/08 ID :035740F Name:根保光秀 !!! This Page Is Made By Shift JIS !!! 1.偶数奇数判定プログラム(GUIaa)をタイプし、その動作を考察せよ。 2.例外処理について、考察せよ。 3.上記のサンプルプログラムに出てきたGUI部品を、全て使ったプログラムを作成せよ。 4.摂氏から華氏、華氏から摂氏への温度換算ができるプログラムを作成せよ。 5.「電卓」プログラム。中身は自分の思うように。もくじ
[Mi:eclipse/workspace/rep#6] j03040% java List GUIaa.java File name:GUIaa.java 1:import java.awt.*; //java.awtを読み込む 2:import java.awt.event.*; //java.awt.eventを読み込む 3: 4:public class GUIaa extends Frame { //Frameを継承 5: Button b0 = new Button("Even/Odd?"); //GUI部品"Button"を生成&初期化 6: Label x0 = new Label("Type a number and press...");//GUI部品"Label" 7: TextField t0 = new TextField(); //GUI部品"TextField"を生成&初期化 8: 9: public GUIaa() { //コンストラクタ 10: setLayout(null); //部品の自動配置機能をoffにする 11: add(t0); t0.setBounds(10, 40, 90, 30); //TextFieldを貼付け 12: add(b0); b0.setBounds(110, 40, 80, 30); //Buttonを張り付け 13: add(x0); x0.setBounds(10, 80, 180, 30); //Labelを張り付け 14: b0.addActionListener(new ActionListener() { //無名クラス、イベント 15: public void actionPerformed(ActionEvent evt) { 16: int i = (new Integer(t0.getText())).intValue(); //"TextField"の内容を読みこむ 17: t0.setText(""); //TextFieldを初期化 18: if(i % 2 == 0) { //iが2で割り切れる(偶数)なら 19: x0.setText(i + " is Even"); //"Label"にEvenと表示 20: } else { //2で割り切れない(奇数)なら 21: x0.setText(i + " is Odd"); //"Label"にOddと表示 22: } 23: } 24: }); 25: } 26: public static void main(String[] args) { //mainメソッド 27: Frame win = new GUIaa(); //インスタンス生成 28: win.setSize(200, 150); win.setVisible(true); //表示するウインドウのサイズを指定 29: win.addWindowListener(new WindowAdapter() { //無名クラス&イベント 30: public void windowClosing(WindowEvent evt) { //ウインドウを閉じるときのイベント 31: System.exit(0); //プログラムを終わる 32: } 33: }); 34: } 35:} |
Eventに用意されているフィールド | |
Checkbox |
チェックボックスを作る チェックボックスとは、tureまたはfalseのどちらかの状態をとる |
Label |
ラベルを作る ラベルとは、テキストを表示させるところです |
List |
リストを生成する リストとは、いくつかのテキストを表示するものです。 |
Menu |
メニューを生成する メニューは、メニューバーに表示されるボタンのようなもの |
TextField |
テキストフィールドを生成する テキストフィールドは、ユーザーが一行のテキストを編集できるところです。 |
主なGUIコントロール | |
KEY_PRESS | ユーザーが普通のキーを押した |
LIST_SELECT | リストの項目が選択された |
MOUSE_DOWN | ユーザがマウスボタンを押した |
clickCount | MOUSE_DOWNイベントの場合、連続したクリックの数を示します。 |
Listenerインターフェース名 | 実装するメソッド名 | |
ActionListener | アクションイベントを受け取る | actionPerformed(ActionEvent e) |
MouseListener | マウスイベントを受け取る |
mouseClicked(MouseEvent e) mouseEntered(MouseEvent e) mouseExited(MouseEvent e) mousePressed(MouseEvent e) mouseReleased(MouseEvent e) |
KeyListener | キーボードイベントを受け取る |
keyPressed(KeyEvent e) keyReleased(KeyEvent e) keyTyped(KeyEvent e) |
WindowListener | ウインドウイベントを受け取る |
windowClosed(WindowEvent e) windowClosing(WindowEvent e) windowDeiconified(WindowEvent e) windowIconified(WindowEvent e) windowOpened(WindowEvent e) |
メソッド名 | |
actionPerformed(ActionEvent e) | アクションが発生すると呼び出される |
mouseClicked(MouseEvent e) mouseEntered(MouseEvent e) mouseExited(MouseEvent e) mousePressed(MouseEvent e) mouseReleased(MouseEvent e) |
マウスがクリックされると呼び出される コンポーネットにマウスが入ると呼び出される コンポーネットからマウスが出ると呼び出される マウスボタンが押されると呼び出される マウスボタンが離されると呼び出される |
keyPressed(KeyEvent e) keyReleased(KeyEvent e) keyTyped(KeyEvent e) |
キーを押している時に呼び出される キーを離した時に呼び出される キーを押した時に呼び出される |
windowClosed(WindowEvent e) windowClosing(WindowEvent e) windowDeiconified(WindowEvent e) windowIconified(WindowEvent e) windowOpened(WindowEvent e) |
ウインドウがクローズされた時に呼び出される ウインドウをクローズしようとした時に呼び出される アクティブウインドウじゃなくなったら呼び出される ウインドウが最小化された時に呼び出される ウインドウが最初に可視になった時に呼び出される |
class Ke inplements MouseListener{ void mouseClicked(MouseEvent e){System.out.println("Click!!");} void mouseEntered(MouseEvent e){} Void mouseExited(MouseEvent e){} void mousePressed(MouseEvent e){} void mouseReleased(MouseEvent e){} }
[Mi:eclipse/workspace/rep#6] j03040% java List ColorRGBa.java File name:ColorRGBa.java 1:/* 2: * @day :2004/01/03 3: * @author :j03040 4: * @ST-ID :035740F 5: */ 6:import java.awt.*; 7:import java.awt.event.*; 8: 9:public class ColorRGBa extends Frame { //Frameを継承 10: Button b0 = new Button("Display"); //Bottonを生成&初期化 11: Label[] la = new Label[]{new Label ("Red"), //Labelを生成&初期化 12: new Label ("Green"), //Labelを配列で生成 13: new Label ("Blue") }; 14: TextField[] ta = new TextField[]{new TextField(), //TextFieldを生成&初期化 15: new TextField(), 16: new TextField()}; 17: Label x0 = new Label("Input RGB values [0..255]"); //Labelを生成&初期化 18: 19: public ColorRGBa() { 20: setLayout(null); //自動配置機能をoff 21: for(int i = 0; i < la.length; i++) { //配列で宣言したGUI部品の張り付け 22: add(la[i]); la[i].setBounds(10, 40 + i*40, 60, 30); 23: add(ta[i]); ta[i].setBounds(80, 40 + i*40, 60, 30); 24: } 25: add(b0); b0.setBounds(10, 160, 60, 30); //Buttonの張り付け 26: add(x0); x0.setBounds(10, 200, 180, 30); //Labelの張り付け 27: b0.addActionListener(new ActionListener() { //ボタンが押されたときの処理 28: public void actionPerformed(ActionEvent evt) { 29: try { //例外処理Try~catch文 30: x0.setBackground(new Color( //ラベルの背景の色を変える 31: (new Integer(ta[0].getText())).intValue(), 32: (new Integer(ta[1].getText())).intValue(), 33: (new Integer(ta[2].getText())).intValue())); 34: } catch(Exception ex) { x0.setText(ex.toString()); } 35: } 36: }); 37: } 38: public static void main(String[] args) { 39: Frame win = new ColorRGBa(); //ColorRGBaのインスタンス生成 40: win.setSize(200, 250); win.setVisible(true); //可視にしてサイズを設定 41: win.addWindowListener(new WindowAdapter() { //Window関係のイベントを処理 42: public void windowClosing(WindowEvent evt) { //ウインドウを閉じる時の処理 43: System.exit(0); //プログラムを終了させる 44: } 45: }); 46: } 47:} |
エラー名 | |
ArithmeticException |
数値演算のエラー 例、 0でわり算etc.... |
ArrayIndexOutOfBoundsException |
配列の範囲を超えたアクセス 例、 配列a[1000000] etc..... |
NullPointerException |
Nullポインタへの不正なアクセス アプリケーションがNullを使おうとすると発生 |
NumberFormatException |
数字以外のものを数値に変換 例、数字を入力するTextFiledにひらがなを入力 |
FileNotFoundException |
I/Oエラー ファイルの入出力で発生 |
ClassNotFoundException | 呼び出そうとしたクラスファイルがなかった時に発生 |
DataFormatException | データ形式にエラーがあった場合に発生 |
NegativeArraySizeException |
負のサイズを持った配列があった時に発生 例, 配列a[-2] etc.... |
try{ エラーの起こりうるプログラム }catch{ エラーが起こったときの処理 } |
[Mi:eclipse/workspace/rep#6] j03040% java List extest.java File name:extest.java 1:/* 2: * @day: 2004/01/03 3: * @author j03040 4: * @ST-ID 035740F 5: */ 6:public class extest { 7: public static void main(String[] args) { 8: System.out.println("Make Error!!"); 9: System.out.println(Error()); 10: } 11: public static int Error(){ 12: int total=0,e1=0; 13: int abc[]={0,1,2,3}; 14: //Error1 ArithmeticException 15: total=100/e1; 16: //Error2 ArrayIndexOutOfBoundsException 17: for(int i=0;i<=100;i++){ 18: total+=abc[i]; 19: } 20: return total; 21: } 22:} |
[Mi:eclipse/workspace/rep#6] j03040% java extest Make Error!! Exception in thread "main" java.lang.ArithmeticException: / by zero at extest.Error(extest.java:15) at extest.main(extest.java:9) |
[Mi:eclipse/workspace/rep#6] j03040% java List extest.java File name:extest.java 1:/* 2: * @day: 2004/01/03 3: * @author j03040 4: * @ST-ID 035740F 5: */ 6:public class extest { 7: public static void main(String[] args) { 8: System.out.println("Make Error!!"); 9: System.out.println(Error()); 10: } 11: public static int Error(){ 12: try{ // 13: int total=0,e1=0; 14: int abc[]={0,1,2,3}; 15: //Error1 ArithmeticException 16: total=100/e1; 17: //Error2 ArrayIndexOutOfBoundsException 18: for(int i=0;i<=100;i++){ 19: total+=abc[i]; 20: } 21: return total; 22: }catch(ArithmeticException e){ //catch 演算エラーを検出したら 23: System.out.println("0で割ったらダメさ〜"); 24: }catch(ArrayIndexOutOfBoundsException e){ //catch 配列エラーを検出したら 25: System.out.println("配列そんなにないよ〜"); 26: } 27: return 0; 28: } 29:} |
(1) [Mi:eclipse/workspace/rep#6] j03040% java extest Make Error!! 0で割ったらダメさ〜 0 e1の値を1にして実行してみると (2) [Mi:eclipse/workspace/rep#6] j03040% java extest Make Error!! 配列そんなにないよ〜 0 |