学籍番号:055720A
名 前 :小橋川 俊

○課題1

偶数奇数判定プログラム(GUIaa)をタイプし、その動作を考察せよ。

○ソースプログラム

import java.awt.*; import java.awt.event.*; public class GUIaa extends Frame { // Frameクラスの継承 Button b0 = new Button("Even/Odd?"); // ボタンを生成 Label x0 = new Label("Type a number and press...");// ラベルを生成 TextField t0 = new TextField(); // テキストフィールドを生成 public GUIaa() { setLayout(null); // 部品の自動配置機能をオフにする add(t0); t0.setBounds(10, 40, 90, 30); // 入力欄の大きさ add(b0); b0.setBounds(110, 40, 80, 30); // ボタンの貼付け add(x0); x0.setBounds(10, 80, 180, 30); // 表示欄の貼付け b0.addActionListener(new ActionListener() { // ボタンを押した後の動作 public void actionPerformed(ActionEvent evt) { int i = (new Integer(t0.getText())).intValue(); t0.setText(""); if(i % 2 == 0) { // 条件式 x0.setText(i + " is Even"); // 偶数 } else { x0.setText(i + " is Odd"); // 奇数 } } }); } public static void main(String[] args) { Frame win = new GUIaa(); // 前述のオブジェクトを、変数winへ生成・初期化 win.setSize(200, 150); // ウィンドウの大きさ win.setVisible(true); // ディスプレイへの表示 win.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent evt) {//ウィンドウを閉じた後の動作 System.exit(0); // 現在のプログラムを終了する } }); } }


○実行結果


○考察  入力値 XX が…   偶数→XX is Even   奇数→XX is Odd  をそれぞれ表示するプログラムである。 Button ・・・ユーザーがボタン境界の内側でマウスをクリックすると、    ユーザーにフィードバックを提供するようにボタンの外観が変化します。 Label(String str, int align)・・・    strはラベルテキストで、alignは、ラベルを左揃え、中央揃え、右揃えのうち    どれにするかを示す定数です。    定数LEFT,CENTER,RIGHTとして位置合わせの値を設定する。    GUI上に表示される文字列で、プログラムでは変更できますが、ユーザーが変更することはできません。 TextField(String str, int cols)・・・    strはフィールドに入力されたテキストで、引数colsでは、フィールドの幅を    文字数で指定します。    TextFieldでは、1行のテキストを入力することができます。文字を入力すると、    テキストイベントが生成されます。    ENTERキーを押したときにアクションイベントを生成されます。 setLayout()  ・・・要素を配置する座標を計算する必要がないので、時間の節約にとなり、      ユーザーは間違いを起こしやすい作業を行わずにすみます。     2つ目にサイズを変更すると、要素の配置を動的に調整します。    3つ目にコンポーネントは一般的にプラットフォームによってサイズがことなります。      そのため、すべての環境に適した座標を一度に指定することはできません。    ここではsetLayout(null);になっているのでこれらの機能は失っている。 ActionEvent  ・・・ボタンを押したり、リスト項目をダブルクリックしたとき、    メニュー項目を選択したときに生成される。 int i = (new Integer(t0.getText())).intValue();・・・    t0.getText()でt0のテキストを読み込みIntegerで生成後のオブジェクトを不    変なものとする。 setSize();  ・・・要素の数をsizeに変更する。sizeからはみ出した要素は破棄される。 アダプタクラス・・・特定のリスナインターフェイス内のすべてのメソッドの空実装を提供します。           これは、そのインターフェイスで定義されるメソッドの一部だけをオーバーラ           イドしたい場合に便利です。 windowClosing ・・・ユーザーがウィンドウのクローズを要求するとwindowClosing()メソッドが呼び出されます。 WindowEvent  ・・・ユーザーがウィンドウを活動化したとき、閉じたとき、非活動化したとき、      アイコン化解除したとき、アイコン化したとき、開いたとき、終了したときに生成される。

○課題2

例外処理について、考察せよ。

import java.awt.*; import java.awt.event.*; public class ColorRGBa extends Frame { // Frameクラスの継承 Button b0 = new Button("Display"); // ボタンの中身 Label[] la = new Label[]{new Label ("Red"), // 配列 new Label ("Green"), new Label ("Blue")}; TextField[] ta = new TextField[]{new TextField(), // 配列 new TextField(), new TextField()}; Label x0 = new Label("Input RGB values [0..255]"); public ColorRGBa() { setLayout(null); // 部品の自動配置機能をオフにする // LabelとTextFieldをy座標40の間隔で貼付ける // for(int i = 0; i < la.length; i++) { add(la[i]); la[i].setBounds(10, 40 + i*40, 60, 30); add(ta[i]); ta[i].setBounds(80, 40 + i*40, 60, 30); } add(b0); b0.setBounds(10, 160, 60, 30); // ボタンの貼付け add(x0); x0.setBounds(10, 200, 180, 30); // 表示欄の貼付け b0.addActionListener(new ActionListener() { // ボタンを押した後の動作 public void actionPerformed(ActionEvent evt) { try { x0.setBackground(new Color( // 背景色の設定 (new Integer(ta[0].getText())).intValue(), (new Integer(ta[1].getText())).intValue(), (new Integer(ta[2].getText())).intValue())); // エラーメッセージの表示 // } catch(Exception ex) { x0.setText(ex.toString()); } } }); } public static void main(String[] args) { Frame win = new ColorRGBa(); // 前述のオブジェクトを、変数winへ生成・初期化 win.setSize(200, 250); // ウィンドウの大きさ win.setVisible(true); // ディスプレイへの表示 win.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent evt) {//ウィンドウを閉じた後の動作 System.exit(0); // 現在のプログラムを終了する } }); } }


○考察    try {     …例外が発生する可能性のある処理…    } catch(Exception ex) {     …例外時の処理… Javaでは、あらゆる種類の「想定外の事柄」(エラー等)はすべて例外 (exception)と呼ばれる動作の発生によって通知される 例外が発生したときそれを処理するには、このようなtry文を用いる ※(例)    try { x0.setBackground(new Color( (newInteger(ta[0].getText())).intValue(), (newInteger(ta[1].getText())).intValue(), (newInteger(ta[2].getText())).intValue())); } catch(Exception ex) { x0.setText(ex.toString()); } } 「try{}文」で囲まれているため、例外が起こると文末の「catch(Exception ex)」以下の処理が行われる。 ここでは、入力された3つの値(0~255)によってラベルの背景カラーが変わる プログラムで、処理できない値が入力されると 背景カラーが変わる代わりに、 エラー文を表示する。

○課題3

上述のサンプルプログラムに出てきたGUI部品を、全て使ったプログラムを作成せよ。

import java.awt.*; import java.awt.event.*; public class GUIbb extends Frame { // Frameクラスの継承 int i; char c; Button b0 = new Button("Button"); // ボタンの中身 Label x0 = new Label("Label "); TextField t0 = new TextField(); Checkbox c0 = new Checkbox("Checkbox"); List l1 = new List(); TextArea t1 = new TextArea("TextArea"); Choice c1 = new Choice(); Choice c2 = new Choice(); public GUIbb() { setLayout(null); // 部品の自動配置機能をオフにする add(b0); b0.setBounds(10, 110, 80, 30); // ボタンの貼付け add(x0); x0.setBounds(10, 50, 60, 30); // 表示欄の貼付け add(t0); t0.setBounds(80, 50, 300, 30); // 入力欄の大きさ add(t1); t1.setBounds(170, 150, 220, 100); // 入力欄の大きさ add(c0); c0.setBounds(170, 110, 60, 30); // Checkboxの貼付け add(l1); l1.setBounds(10, 150, 140, 210); // Listの大きさ // Listの中身 // for(i=0; i<100; i++) l1.add("List"+i); add(c1); c1.setBounds(170, 260, 100, 50); // Choice1の貼付け // Choice1の中身 // for(i=0; i<100; i++) c1.add("choice"+i); add(c2); c2.setBounds(170, 310, 100, 50); // Choice2の貼付け // Choice2の中身 // c2.add("America"); c2.add("Australia"); c2.add("Brazil"); c2.add("China"); c2.add("France"); c2.add("Germany"); c2.add("Japan"); } public static void main(String[] args) { Frame win = new GUIbb(); // 前述のオブジェクトを、変数winへ生成・初期化 win.setSize(400, 390); // ウィンドウの大きさ win.setVisible(true); // ディスプレイへの表示 } }

○実行結果


○考察 Checkbox ・・・ラベルと小さいボックスを組み合わせたコンポーネントです。     そのチェックボックスで表されるオプション機能に応じて、ボックスにチェッ     クマークを表示するか、表示しないかが決まります。 List   ・・・1以上の項目を選択することを可能にするコンポーネントです。         リストが大きすぎて有効な選択項目をすべて表示できない場合には、スクロー         ルバーが自動的に提供されるのでユーザーはリスト全体を眺めることができる。 TextArea ・・・TextAreaは複数行のテキストを入力することができます。 Choice  ・・・あるタイプのメニューを提供するコンポーネントです。    チョイスをクリックすると、有効な選択項目がすべて表示されます。選択項目      の1つを選択すると、チョイスは通常の状態に戻り、現在の選択項目だけが表示されます。 Object---Component---Button | --Checbox | --Choice | --Label | --List | --TextComponent---TextArea | --TextField Componentのサブクラス
○課題4

摂氏から華氏、華氏から摂氏への温度換算ができるプログラムを作成せよ。

import java.awt.*; import java.awt.event.*; public class Rep7C extends Frame{ Button b0 = new Button("華氏ー>摂氏"); Button b1 = new Button("摂氏ー>華氏"); Button b2 = new Button("クリア"); Label x0 = new Label("入力した温度を摂氏から華氏、または華 氏 から摂氏に変換します。"); Label x1 = new Label("温度を入力し、変換方法を選択して、OK を 押して下さい。"); Label x2 = new Label("温度"); Label x3 = new Label("変換方法"); Label x4 = new Label("変換後の温度"); Label x5 = new Label("温度出力"); Label x6 = new Label(""); TextField t0 = new TextField(); public Rep7C() { setLayout(null); add(b0); b0.setBounds(100, 140, 130, 20); add(b1); b1.setBounds(100, 160, 130, 20); add(b2); b2.setBounds(140, 200, 65, 20); add(x0); x0.setBounds(30, 40, 400, 20); add(x1); x1.setBounds(30, 80, 40, 20); add(x2); x2.setBounds(60, 110, 40, 20); add(x3); x3.setBounds(130, 110, 40, 20); add(x4); x4.setBounds(220, 110, 120, 20); add(x5); x5.setBounds(240, 150, 50, 20); add(t0); t0.setBounds(40, 150, 50, 20); b0.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { try { int i = (new Integer(t0.getText())).intValue(); x5.setText("" + i*1.8+32); }catch(Exception ex) { x5.setText("エラー"); } } }); b1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { try { int i = (new Integer(t0.getText())).intValue(); x5.setText("" + (i-32)/1.8); } catch (Exception ex) { x5.setText("エラー"); } } }); b2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { t0.setText(""); x5.setText(""); } }); } public static void main(String[] args) { Frame win = new Rep7C(); win.setSize(450, 300); win.setVisible(true); win.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent evt) { System.exit(0); } }); } }

○実行結果

実行結果その1 実行結果その2

○課題5

「電卓」プログラム。中身は自分の思うように。

import java.awt.*; import java.awt.event.*; public class Rep7D extends Frame { Label x0 = new Label(); Label x1 = new Label(); TextField t0 = new TextField("0"); Button b0 = new Button("0"); Button b1 = new Button("1"); Button b2 = new Button("2"); Button b3 = new Button("3"); Button b4 = new Button("4"); Button b5 = new Button("5"); Button b6 = new Button("6"); Button b7 = new Button("7"); Button b8 = new Button("8"); Button b9 = new Button("9"); Button ba = new Button("+"); Button bb = new Button("-"); Button bc = new Button("*"); Button bd = new Button("/"); Button be = new Button("AC"); Button bf = new Button("="); int i = 0, y = 0; public Rep7D() { setLayout(null); add(b0); b0.setBounds(50,300,50,40); add(bf); bf.setBounds(100,300,100,40); add(bd); bd.setBounds(200,300,50,40); add(b1); b1.setBounds(50,250,50,40); add(b2); b2.setBounds(100,250,50,40); add(b3); b3.setBounds(150,250,50,40); add(bc); bc.setBounds(200,250,50,40); add(b4); b4.setBounds(50,200,50,40); add(b5); b5.setBounds(100,200,50,40); add(b6); b6.setBounds(150,200,50,40); add(bb); bb.setBounds(200,200,50,40); add(b7); b7.setBounds(50,150,50,40); add(b8); b8.setBounds(100,150,50,40); add(b9); b9.setBounds(150,150,50,40); add(ba); ba.setBounds(200,150,50,40); add(be); be.setBounds(250,150,70,190); add(t0); t0.setBounds(60,100,150,30); add(x0); x0.setBounds(60,60,100,40); add(x1); x1.setBounds(150,60,150,40); b1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { i = i * 10 + 1; String s1 = Integer.toString(i); t0.setText(s1); } }); b2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { i = i * 10 + 2; String s1 = Integer.toString(i); t0.setText(s1); } }); b3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { i = i * 10 + 3; String s1 = Integer.toString(i); t0.setText(s1); } }); b4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { i = i * 10 + 4; String s1 = Integer.toString(i); t0.setText(s1); } }); b5.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { i = i * 10 + 5; String s1 = Integer.toString(i); t0.setText(s1); } }); b6.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { i = i * 10 + 6; String s1 = Integer.toString(i); t0.setText(s1); } }); b7.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { i = i * 10 + 7; String s1 = Integer.toString(i); t0.setText(s1); } }); b8.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { i = i * 10 + 8; String s1 = Integer.toString(i); t0.setText(s1); } }); b9.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { i = i * 10 + 9; String s1 = Integer.toString(i); t0.setText(s1); } }); ba.addActionListener(new ActionListener() { public void actio

実行結果

実行結果その1 実行結果その2 実行結果その3
○感想  最後の二つは、苦戦したので先輩のものを参考にしました。  最初の2つは"実行結果"と言う部分をクリックすると「Applet」によってプログラムが実行されます。  最後の2つなぜか、「Ecripse」上でしか実行できないので、そのイメージを貼付けました。  残りのレポート、テストもがんばりたいと思います。  お疲れ様ですm(_ _)m ○参考文献 独習Java第3版

Wiki に戻る 戻るー>