GUIプログラムⅤ

Similar documents
GUIプログラムⅡ

GUIプログラムⅣ

IE6 2 BMI chapter1 Java 6 chapter2 Java 7 chapter3 for if 8 chapter4 : BMI 9 chapter5 Java GUI 10 chapter6 11 chapter7 BMI 12 chap

Java言語 第1回

Java (9) 1 Lesson Java System.out.println() 1 Java API 1 Java Java 1

public class Kadai _02 { public static void main(string[] args) { MyFrame frame = new MyFrame("Kadai _02"); (2) フレームのクラス名は MyFrame とし 以下

ガイダンス

< F2D B838A835882CC8CF68EAE2E6A7464>

Java言語 第1回

ガイダンス

< F2D E E6A7464>

< F2D834F838C A815B A CC>

ガイダンス

< F2D82B682E182F182AF82F12E6A7464>

Assignment_.java /////////////////////////////////////////////////////////////////////// // 課題 星の画像がマウスカーソルを追従するコードを作成しなさい 次 ///////////////////

< F2D825282CC947B909482CC A815B83682E6A>

public class MyFrame { private JPanel panel1; private JPanel panel2; private JPanel panel3; private JPanel panel4; private JLabel label1; private JTex

< F2D B825082CC96E291E82E6A7464>

< F2D92DE82E8914B82CC977088D32E6A7464>

< F2D82518CC282CC D2E6A7464>

PowerPoint Presentation

Java言語 第1回

< F2D F B834E2E6A7464>

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 条件判断文 3 switch 文 switch 文式が case の値と一致した場合 そこから直後の break; までを処理し どれにも一致しない場合 default; から直後の break; までを処理する 但し 式や値 1

Object MenuComponent MenuBar MenuItem Menu CheckboxMenuItem

データ構造とアルゴリズム論

PowerPoint Presentation

10/31 Java AWTの基本構造(Frameクラスの継承) 演習課題資料

< F2D8EA CE909482CC92EA82852E6A7464>

Prog1_12th

目 次 Java GUI 3 1 概要 クラス構成 ソースコード例 課題...7 i

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

r4.dvi

Java言語 第1回

Microsoft PowerPoint - prog13.ppt

< F2D89BA8EE882C E6A7464>

Prog2_11th

< F2D A838B838D96402E6A7464>

Microsoft PowerPoint - prog13.ppt

< F2D82518E9F8AD CC95BD8D7388DA93AE2E6A7464>

6 p.1 6 Java GUI GUI paintcomponent GUI mouseclicked, keypressed, actionperformed mouseclicked paintcomponent thread, 1 GUI 6.0.2, mutlithread C

K227 Java 2

アプレットの作成

< F2D82518E9F8AD CC834F CC8CFC82AB82C68D4C>


Java 2 - Lesson01

Java演習(9) -- クラスとメソッド --

問題1 以下に示すプログラムは、次の処理をするプログラムである

< F2D A839382CC906A2E6A7464>

awt の主要なクラスを下記に示す クラス Component Container Button Label Panel Frame 説明画面にユーザインターフェイス要素として表示し, ユーザとのやり取りを行うコンポーネントを表すすべてのコンポーネントのスーパークラスになる ほかのコンポーネントを含

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

データ構造とアルゴリズム論

Prog1_12th

JavaプログラミングⅠ

Thread

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

r2.dvi

I. (i) Java? (A). 2Apples (B). Vitamin-C (C). Peach21 (D). Pine_Apple (ii) Java? (A). Java (B). Java (C). Java (D). JavaScript Java JavaScript Java (i

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

JavaプログラミングⅠ

データ構造とアルゴリズム論

ÿþ˜u#u·0¹0Æ0à0

PowerPoint プレゼンテーション

r5.dvi

Microsoft PowerPoint - OOP.pptx

I HTML HashMap (i) (ii) :.java import java.net.*; import java.io.*; import java.util.hashmap; public class SimpleStopWatch { public static voi

II Java :30 12:00 I. I IV II. III. IV. ( a d) V. : this==null, T == N A ActionListener C class D actionperformed G getsource I implements K

< F2D BCA82CC978E89BA82CC8EC08CB12E6A7464>

次の演習課題(1),(2)のプログラムを完成させよ

Local variable x y i paint public class Sample extends Applet { public void paint( Graphics gc ) { int x, y;... int i=10 ; while ( i < 100 ) {... i +=

Programming-C-9.key

I. (i) Foo public (A). javac Foo.java java Foo.class (C). javac Foo java Foo (ii)? (B). javac Foo.java java Foo (D). javac Foo java Foo.class (A). Jav

JavaプログラミングⅠ

ガイダンス

Microsoft PowerPoint - prog11.ppt

教材ドットコムオリジナル教材 0から始めるiアフ リ リファレンス i アプリ簡易リファレンス ver i アプリ Java 独自のメソッド (1)iアプリの命令を使えるようにする import com.nttdocomo.ui.*; (2) 乱数を使う import java.u

2008 e-learning T050050

2

オブジェクト指向プログラミング・同演習 5月21日演習課題

データ構造とアルゴリズム論

Microsoft PowerPoint - prog11.ppt

r3.dvi

55 7 Java C Java TCP/IP TCP/IP TCP TCP_RO.java import java.net.*; import java.io.*; public class TCP_RO { public static void main(string[] a

Microsoft PowerPoint - OOP.pptx

Microsoft Word 年度情報コミュニケーション実験II(Ver0.9)c.docx

Java演習(4) -- 変数と型 --

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy

ガイダンス

ソフトウェア基礎演習 課題

2

PowerPoint プレゼンテーション

Prog1_15th

GEC-Java

問題1 以下に示すプログラムは、次の処理をするプログラムである

Microsoft PowerPoint - prog12.ppt

<4D F736F F F696E74202D AC C8899E D834F E >

Prog2_12th

新・明解Java入門

問1

ソフトウェア開発方法論2

Transcription:

GUI プログラム Ⅴ 前回課題の制作例 ファイル名 :awttest.java public class awttest public static void main(string arg[]) //=============================================== // ウィンドウ (Frame クラス ) のインスタンスを生成 //=============================================== awtdb win = new awtdb(" 簡易データベース ", 520, 350, -1, -1, false); 変更 //================== // ウィンドウの表示 //================== win.setvisible(true); ファイル名 :awtdb.java ベースは Ⅱ の awtsave.java と Ⅳ の awtimage.java import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; public class awtdb extends Frame awtgrid grd = new awtgrid(" データ表示画面 ", 800, 300, -1, -1, false); 追加 // コンポーネントクラスの宣言 Button btnsave, btnload, btnbrowse; Label lblcaption1, lblcaption2, lblcaption3, lblcaption4; Label lblcaption5, lblcaption6, lblcaption7; TextField txtname, txtzip, txtimage; TextArea txtaddress; CheckboxGroup cg; Checkbox chksex1, chksex2; Checkbox chkhobby1, chkhobby2, chkhobby3, chkhobby4, chkhobby5; Choice cboorigin; Image imgpicture = null; // コンストラクタ public awtdb(string title, int width, int height, int top, int left, boolean resize) // ウィンドウの設定 settitle(title); setsize(width, height); -1-

if(top>0 && left>0) setlocation(top, left); else Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); setlocation((d.width-width)/2,(d.height-height)/2); setresizable(resize); // レイアウトマネージャの無効化 setlayout(null); // チェックボックスのグループ cg = new CheckboxGroup(); // コンポーネントの生成 lblcaption1 = new Label(" 氏名 "); add(lblcaption1); lblcaption1.setbounds(20, 30,60,20); txtname = new TextField(); add(txtname); txtname.setbounds(90, 30,200,20); lblcaption2 = new Label(" 郵便番号 "); add(lblcaption2); lblcaption2.setbounds(20, 60,60,20); txtzip = new TextField(); add(txtzip); txtzip.setbounds(90, 60,80,20); lblcaption3 = new Label(" 住所 "); add(lblcaption3); lblcaption3.setbounds(20, 90,60,20); txtaddress = new TextArea(); add(txtaddress); txtaddress.setbounds(90, 90,200,60); lblcaption4 = new Label(" 性別 "); add(lblcaption4); lblcaption4.setbounds(20,160,60,20); chksex1 = new Checkbox(" 男性 ",cg,true); add(chksex1); chksex1.setbounds(90,160,70,20); chksex2 = new Checkbox(" 女性 ",cg,false); add(chksex2); chksex2.setbounds(160,160,70,20); lblcaption5 = new Label(" 趣味 "); add(lblcaption5); lblcaption5.setbounds(20,190,60,20); chkhobby1 = new Checkbox(" 磯釣り "); add(chkhobby1); chkhobby1.setbounds(90,190,70,20); chkhobby2 = new Checkbox(" 海釣り "); add(chkhobby2); chkhobby2.setbounds(160,190,70,20); chkhobby3 = new Checkbox(" 船釣り "); add(chkhobby3); chkhobby3.setbounds(230,190,70,20); chkhobby4 = new Checkbox(" 沖釣り "); add(chkhobby4); chkhobby4.setbounds(90,220,70,20); chkhobby5 = new Checkbox(" 渓流釣り "); add(chkhobby5); chkhobby5.setbounds(160,220,70,20); lblcaption6 = new Label(" 本籍地 "); add(lblcaption6); lblcaption6.setbounds(20,250,60,20); cboorigin = new Choice(); cboorigin.additem(" 北海道 "); cboorigin.additem(" 青森 "); cboorigin.additem(" 秋田 "); cboorigin.additem(" 岩手 "); cboorigin.additem(" 福島 "); add(cboorigin); cboorigin.setbounds(90,250,100,20); lblcaption7 = new Label(" 画像 "); add(lblcaption7); lblcaption7.setbounds(20,280,60,20); txtimage = new TextField(); add(txtimage); txtimage.setbounds(90,280,200,20); // Button クラスの生成 btnsave = new Button(" 保存 "); add(btnsave); btnsave.setbounds(120,310,130,30); btnload = new Button(" 一覧 "); add(btnload); btnload.setbounds(260,310,130,30); btnbrowse = new Button(" 参照..."); add(btnbrowse); btnbrowse.setbounds(300,280,50,20); // 匿名内部クラス ( ウィンドウリスナ用 ) WindowAdapter wad = new WindowAdapter() public void windowclosing(windowevent e) System.exit(0); ; addwindowlistener(wad); -2-

// 匿名内部クラス ( アクションリスナ用 ) ActionListener cal = new ActionListener() public void actionperformed(actionevent e) Object obj = e.getsource(); // 保存ボタンがクリックされた時 if(obj == btnsave) // データ格納用配列の宣言 String d[] = new String[11]; String all = ""; // コンポーネントからデータ取得 d[ 0] = txtname.gettext(); d[ 1] = txtzip.gettext(); d[ 2] = txtaddress.gettext(); if(chksex1.getstate() == true)d[3] = chksex1.getlabel(); elsed[3] = chksex2.getlabel(); if(chkhobby1.getstate() == true)d[4] = " "; else d[4] = " "; if(chkhobby2.getstate() == true)d[5] = " "; else d[5] = " "; if(chkhobby3.getstate() == true)d[6] = " "; else d[6] = " "; if(chkhobby4.getstate() == true)d[7] = " "; else d[7] = " "; if(chkhobby5.getstate() == true)d[8] = " "; else d[8] = " "; d[ 9] = cboorigin.getselecteditem(); d[10] = txtimage.gettext(); for(int i=0; i<10; i++)all += (d[i] + ","); all += (d[10] + " n"); for(int i=0; i<11; i++)system.out.println("d[" + i + "]:" + d[i]); System.out.println("ALL :" + all); // データの保存 (CSV 形式 ) try FileWriter fw = new FileWriter("easydb.csv", true); fw.write(all); fw.close(); catch(exception ex) // 一覧ボタンがクリックされた時追加 else if(obj == btnload) grd.setvisible(true); // 参照ボタンがクリックされた時 else if(obj == btnbrowse) // ファイルの指定 ( 匿名内部クラスで定義 ) JFileChooser fd = new JFileChooser(); // フィルタの設定 fd.setfilefilter ( // 下記はフルネームで記述する (java.io.filefilter と区別する為 ) new javax.swing.filechooser.filefilter() public boolean accept(file f) if (f!= null) -3-

// ディレクトリの場合 if (f.isdirectory()) return true; // ファイルの場合 String s = f.getname(); int i = s.lastindexof('.'); if (i!= -1) s = s.substring(i+1).tolowercase(); if ((s.equals("jpg")) (s.equals("gif"))) return true; return false; public String getdescription() return " 画像ファイル (JPG,GIF)"; ); // ファイル選択ダイアログの表示 fd.showopendialog(null); // ファイル名 ( フルパス ) の表示 // getselectedfile:javax.swing.jfilechooser クラスのメソッド // getabsolutepath:java.io.file クラスのメソッド txtimage.settext(fd.getselectedfile().getabsolutepath()); // 画像の表示 Toolkit tk = Toolkit.getDefaultToolkit(); imgpicture = tk.getimage(txtimage.gettext()); repaint(); ; btnsave.addactionlistener(cal); btnload.addactionlistener(cal); btnbrowse.addactionlistener(cal); // 画面描画メソッド public void paint(graphics g) if (imgpicture!= null) super.paint(g); g.drawimage(imgpicture,300,30,200,240,this); -4-

ファイル名 :awtgrid.java ベースは Ⅲ の awtload.java import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; public class awtgrid extends Frame // グローバルな定数と変数の宣言 final int MAX = 100; // 最大レコード数 String d[][] = new String[MAX][11]; // データ保存用 int cnt; // データ数 ( レコード数 ) int page; // 表示ページ番号 変更 // コンポーネントの宣言 Button btnload, btnprev, btnnext; Panel pnlbase; Label lbldisp[] = new Label[100]; // コンストラクタ public awtgrid(string title, int width, int height, int top, int left, boolean resize) // ウィンドウの設定 settitle(title); setsize(width, height); if(top>0 && left>0) setlocation(top, left); else Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); setlocation((d.width-width)/2,(d.height-height)/2); setresizable(resize); // レイアウトを BorderLayput に設定 setlayout(new BorderLayout()); // コンポーネントの生成と配置 btnload = new Button(" 読込 "); add("south", btnload); btnprev = new Button(" 前へ "); add("west", btnprev); btnnext = new Button(" 次へ "); add("east", btnnext); pnlbase = new Panel(new GridLayout(10, 10)); add("center", pnlbase); for(int i=0; i<100; i++) lbldisp[i] = new Label(); pnlbase.add(lbldisp[i]); if(i<10) lbldisp[i].setbackground(new Color( 0, 0,255)); lbldisp[i].setforeground(new Color(255,255,255)); switch(i) case 0: lbldisp[i].settext(" 氏名 "); break; case 1: lbldisp[i].settext(" 郵便番号 "); break; case 2: lbldisp[i].settext(" 住所 "); break; case 3: lbldisp[i].settext(" 性別 "); break; -5-

case 4: lbldisp[i].settext(" 磯釣り "); break; case 5: lbldisp[i].settext(" 海釣り "); break; case 6: lbldisp[i].settext(" 船釣り "); break; case 7: lbldisp[i].settext(" 沖釣り "); break; case 8: lbldisp[i].settext(" 渓流釣 "); break; case 9: lbldisp[i].settext(" 本籍地 "); break; elselbldisp[i].settext(""+i); pnlbase.setvisible(true); // 匿名内部クラス ( ウィンドウリスナ用 ) WindowAdapter wad = new WindowAdapter() public void windowclosing(windowevent e) setvisible(false);; ; addwindowlistener(wad); // 匿名内部クラス ( アクションリスナ用 ) ActionListener cal = new ActionListener() public void actionperformed(actionevent e) Object obj = e.getsource(); if(obj == btnload) try String all; // 入力ファイルのオープン BufferedReader br = new BufferedReader(new FileReader("easydb.csv")); cnt = 0; while ((all = br.readline())!= null) StringTokenizer st = new StringTokenizer(all, ","); while(st.hasmoretokens()) for(int i=0; i<11; i++) d[cnt][i] = st.nexttoken(); cnt++; // ファイルのクローズ br.close(); catch (Exception ex) // データの表示 page = 0; datadisplay(page); 変更 else if(obj == btnprev) page--; datadisplay(page); -6-

else if(obj == btnnext) page++; datadisplay(page); ; btnload.addactionlistener(cal); btnprev.addactionlistener(cal); btnnext.addactionlistener(cal); // 表示メソッド ( サブルーチン ) void datadisplay(int p) int start = p * 9; if(start<0 start>=cnt)return; for(int i=start; i<start+9; i++) if(i>=cnt)break; for(int j=0; j<10; j++) //System.out.println("dimention:"+(((i+1)*10+j) % 90)); lbldisp[(i*10+j) % 90 + 10].setText(d[i][j]); 課題 1. 上記の例では CSV( カンマ区切り ) ファイルを対象と仕て居るが MDB( アクセス ) ファイルでも同じ事が出来る様にする 2. メイン画面で 前へ と 次へ のボタンを追加し 1 レコード宛 移動表示する事が出来る様にする 3. 更に 変更 のボタンを追加し 表示されて居るデータに変更が為された場合 データの更新を行う事が出来る様にする 4. 一覧画面で レコードをクリックして選択すると 当該レコードのデータが メイン画面に表示される様にする -7-