Java言語 第1回

Similar documents
Java言語 第1回

< F2D B825082CC96E291E82E6A7464>

< F2D E E6A7464>

Java言語 第1回

Java言語 第1回

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

< F2D834F838C A815B A CC>

< F2D B838A835882CC8CF68EAE2E6A7464>

Object MenuComponent MenuBar MenuItem Menu CheckboxMenuItem

< F2D89BA8EE882C E6A7464>

< F2D82518E9F8AD CC834F CC8CFC82AB82C68D4C>

ガイダンス

< F2D82518E9F8AD CC95BD8D7388DA93AE2E6A7464>

< F2D F B834E2E6A7464>

ガイダンス

< F2D A838B838D96402E6A7464>

< F2D825282CC947B909482CC A815B83682E6A>

< F2D82B682E182F182AF82F12E6A7464>

< F2D82518CC282CC D2E6A7464>

ガイダンス

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

< F2D92DE82E8914B82CC977088D32E6A7464>

< F2D A839382CC906A2E6A7464>

< F2D8EA CE909482CC92EA82852E6A7464>

GUIプログラムⅣ

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

Microsoft PowerPoint - OOP.pptx

Microsoft PowerPoint prog1_doc2.pptx

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

Microsoft PowerPoint ppt

PowerPoint Presentation

表示の更新もそういた作業のひとつに当たる スレッドの使用アニメーション アニメーションやシミュレーションなどは画面の更新が一定のタイミングで行われていく この連続した画面の更新をスレッドを利用して行う しかし paint() メソッドを直接呼び出して表示を更新することはできない その理由

Microsoft PowerPoint prog1_doc2x.pptx

GUIプログラムⅤ

Prog1_12th

Microsoft PowerPoint - prog12.ppt

Java言語 第1回

Java 2 - Lesson01

Microsoft PowerPoint - prog11.ppt

< F2D BCA82CC978E89BA82CC8EC08CB12E6A7464>

Microsoft PowerPoint - prog11.ppt

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

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

<4D F736F F F696E74202D AC C8899E D834F E >

GUIプログラムⅡ

ガイダンス

Java演習(2) -- 簡単なプログラム --

問1

ガイダンス

Prog2_11th

2 p.2 2 Java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.java Java : Q B

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

Prog1_12th

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

Microsoft Word - Java3.DOC


Microsoft PowerPoint ppt

2

2 p.2 2 Java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.java Java : Q B

2008 e-learning T050050

text_12.dvi

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

Microsoft PowerPoint - OOP.pptx

アプレットの作成

PowerPoint Presentation

Java 2 p.2 2 Java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.java Java : Q 2.

2

2 static final int DO NOTHING ON CLOSE static final int HIDE ON CLOSE static final int DISPOSE ON CLOSE static final int EXIT ON CLOSE void setvisible

手書認識 グラフ描画 Step2-2 手書認識 : 認識結果を PaintPanel で描画する < 属性付き文字列 AttributedString> 標準出力では分かりにくいうえに認識結果を使えないので 認識するごとに PaintPanel に文字を描画することにする ここで 数式はただの文字列

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

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 +=

HCI プログラミング 8 回目ボタン チェックボックス ラジオボタン 今日の講義で学ぶ内容 ボタンとアクションイベント ボタンのカスタマイズ チェックボックスとラジオボタン ボタンとアクションイベント 1 ボタンを配置してみましょう ボタンは ラベルと同じようにフォントやその色 画像の貼り付けなど

GUI プログラミング第 4 Graph ~ 手書認識と関数グラフ描画 ~ マウスで数式を書いて認識し 関数グラフを描画する < 手書認識とグラフ描画のステップ> ステップ 1_1 フレームの作成 ステップ 1_2 マウスで自由に線を書く ステップ 2-1 手書認識認識結果を標準出力する ステップ

2 p.2 2 Java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.java Java : Q B

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


JAVA入門

アジェンダ 1 グラフィカルなインタフェース GUI(Graphical User Interface) の基礎 2 Swing を利用する Swing の基礎知識 2

(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt)

PowerPoint プレゼンテーション

Microsoft PowerPoint pptx

text_13.dvi

HCI プログラミング 10 回目テキストフィールドとキーイベント 今日の講義で学ぶ内容 テキストフィールドの利用 キーイベントの処理 テキストフィールドの利用 1 テキストフィールドを配置してみましょう テキストフィールドを用いることにより 数値や文字列などのデータ入力が可能になります ソースファ

Safari AppletViewer Web HTML Netscape Web Web 15-1 Applet Web Applet init Web paint Web start Web HTML stop destroy update init Web paint start Web up

PowerPoint プレゼンテーション

自宅でJava言語の開発環境を作る方法

2 p.2 2 Java > javac Hello0.java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.j

Applet java.lang.object java.awt.component java.awt.container java.awt.panel java.applet.applet

Java 2 - Lesson01

PowerPoint プレゼンテーション

Microsoft PowerPoint - prog13.ppt

Microsoft PowerPoint ppt

第1章 ビジュアルプログラミング入門

Microsoft Word - Java3.DOC

r4.dvi

Javaプログラムの実行手順

r2.dvi

Microsoft PowerPoint - prog13.ppt

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


Transcription:

Java 言語 第 10 回ウインドウ型アプリケーション (1) 知的情報システム工学科 久保川淳司 kubokawa@me.it-hiroshima.ac.jp

前回の課題 (1) ボーダーレイアウト, グリッドレイアウト, パネルを使用して, 電卓風のボタンを実現する BorderLayout で NORTH, CENTER, SOUTH に分割 NORTHにはテキストフィールドを設定 CENTERにはパネルを使って9つのボタンを設定 Sourthにはパネルを使って2つのボタンを設定 0~9のボタンで数字が入力され,Clearボタンで表示がクリアされる

課題 (2) import java.applet.applet; import java.awt.*; import java.awt.event.*; /* <APPLET CODE="JaPanelKadai.class" WIDTH=200 HEIGHT=120> </APPLET> */ public class JaPanelKadai extends Applet implements ActionListener { Button bt0, bt1, bt2, bt3, bt4, bt5, bt6, bt7, bt8, bt9, btclr; TextField txt1; String ss = ""; public void init() { // BorderLayout を設定し NORTH,CENTER,SOUTH だけを使う // NORTH にテキストフィールドを設定する // CENTER にパネルを設定し内部を 3 行 3 列の GridLayout にする // p_center.setlayout(new GridLayout(3, 3)); パネルのレイアウト設定 // 1~9 のボタンを設定 // 1~9 のボタンをリスナ登録 add(p_center, BorderLayout.CENTER); // CENTER に登録 // SOUTH にパネルを設定し内部を 1 行 2 列の GridLayout にする // p_center.setlayout(new GridLayout(1, 2); パネルのレイアウト設定 // 0, Clear ボタンを設定 // 0, Clear ボタンをリスナ登録 add(p_south, BorderLayout.SOUTH); // SOUTH に登録 public void actionperformed(actionevent e) { // ボタンクリック処理 Button btn = (Button)e.getSource(); if (btn == btclr) {ss = ""; else {ss = ss + btn.getlabel(); update(this.getgraphics()); public void paint(graphics g) { // 表示する txt1.settext(ss);

ウインドウ型アプリケーション

ウインドウ型アプリケーションの基礎知識 (1) ウインドウ型アプリケーション Windows 上の一般的なアプリケーション形式 Web ブラウザや appletviewer を使わなくても, そのプログラム単独で動作させることができる ( ただし,JVM は必要 ) Java アプレットとの違い Java アプレットはネットワーク上で動くことを前提としているため, セキュリティの観点から Sandbox( 砂場 ) と呼ばれる保護された領域内でプログラムを動作させるため, ローカルファイルへのアクセスが制限されている ウインドウ型アプリケーションは JVM(Java 仮想マシン ) 上で動くのは同じであるが, 通常のアプリケーションと同じようにローカルファイルへの入出力などの操作が可能である

ウインドウ型アプリケーションの基礎知識 (2) 基本構成 Java アプレットの時には Applet クラスを継承したクラスを作成していたが, ウインドウ型アプリケーションでは Frame クラスを継承してクラスを作成する class MyPrg extends Frame {... 表示させる窓のサイズは以下のように設定する xxx.setsize( 横サイズ, 縦サイズ ); // xxx は Myprg クラスのオブジェクト ( 注 ) アプレットでの窓のサイズは,HTML で記述していた /* <APPLET CODE="JaPanelKadai.class" WIDTH=200 HEIGHT=120> </APPLET> */

ウインドウ型アプリケーションの基礎知識 (3) 窓への描画 窓への描画はこれまでのアプレットとほとんど同じ方法 (paint メソッド ) で実現できる public void paint(graphics g) { g.drawstring(...); g.drawoval(...);... 部品の配置 Frame ではデフォルトで BorderLayout が用いられる (Applet のデフォルトは FlowLayout) Applet の時と同様に, 自由にレイアウトを変更することができる また,Panel も使用することができる

ウインドウ型アプリケーションの基礎知識 (4) イベント処理, 部品の処理 マウスクリックなどに対応するイベント処理やボタンの処理等は Applet の場合と同じ タイトル文字 settitle("my アプリケーション "); // タイトル文字列 背景色の設定 setbackground(color.yellow); // 背景を黄色にする 窓の表示 xxx.setvisible(true); // フレームを表示する xxx.setvisible(false); // フレームを非表示にする 窓を閉じる addwindowlistener(new WindowAdapter() { // 閉じるボタンが押された時 public void windowclosing(windowevent e) { System.exit(0); );

ウインドウ型アプリケーションの作成 (1) 文字列表示プログラム 文字列を表示するアプレットをウインドウ型アプリケーションに変更する 注意点として, アプレットの座標はウインドウのタイトル下のメインウインドウの座標で指定されていたが, フレームの場合はタイトルバーの端から座標を計算することになるため,y 座標の値を大きくしておく必要がある g.drawstring(ss, 10, 20); // アプレットの場合 g.drawstring(ss, 10, 50); // フレームの場合

import java.awt.*; import java.awt.event.*; class MyFrame extends Frame { // Frameを継承して窓を作成する public ウインドウ型アプリケーションの作成 MyFrame(String title) { (2) ファイルネーム JaFrmCh.java として作成 settitle(title); // タイトル設定 addwindowlistener(new WindowAdapter() { // 閉じるボタン対応 public void windowclosing(windowevent e) { System.exit(0); // 終了する ); public void paint(graphics g) { String ss = "ABCabc 文字列 "; g.drawstring(ss, 10, 50); // デフォルトのフォントで表示 g.setfont(new Font("Serif", Font.BOLD, 24)); g.drawstring(ss, 10, 80); // Serif 太字 24 ポイントを設定 g.setfont(new Font("MS ゴシック ", Font.PLAIN, 24)); g.drawstring(ss, 10, 110); // ゴシック 普通 24 ポイントを設定 g.setfont(new Font("MS 明朝 ", Font.ITALIC, 36)); g.drawstring(ss, 10, 150); // 明朝 斜体 36 ポイントを設定 public class JaFrmCh { public static void main(string args[]) { MyFrame frm = new MyFrame(" 文字列の出力 "); // フレームの生成 frm.setsize(300, 200); // 窓サイズ横 縦 frm.setvisible(true); // フレームを表示する

ウインドウ型アプリケーションのコンパイル実行 プログラム編集 notepad javacでのコンパイル javac プログラム実行 javaw ( ウインドウ用 ) Eclipse では今までと同じやり方

フレームクラスの説明 (1) フレームクラスで定義されている主要なメソッド Image geticonimage() 最小化したときのアイコンイメージを返す MenuBar getmenubar() このフレームのメニューバーを返す int getstage() フレームの状態を返す アイコンなら Frame.ICONIFIED, 通常なら, Frame.NORMAL String gettitle() フレームのタイトルを返す boolean isresizable() ユーザがフレームサイズを変更できるかどうかを示す void remove(menucompornent m) 指定されたメニューをこのフレームから削除する void setmenubar(menubar mb) メニューバーを設定する

フレームクラスの説明 (2) void seticonimage(image image) 最小化した時のアイコンイメージを設定する void setresizeable() ユーザがフレームサイズを変更できるようにする void setstate(int state) フレームの状態を設定する (Frame.ICONIFIED, Frame.NORMAL) void setsize(int width, int height) フレームのサイズをwidth, heightに設定する void setvisible(boolean b) フレームを表示 (true), 非常時 (false) に設定する void addwindowlistener(windowlistener l) ウインドウイベントを受け取るためのウインドリスナを追加する void removewindowlistener(windowlistener l) 指定されたウインドウリスナを削除する void dispose() ウインドウを開放する 非表示にするとともに, リソース開放する

フレームクラスの説明 (3) ウインドウリスナインタフェースの仕様 void windowactivated(windowevent e) ウインドウがアクティブ化されると呼び出される void windowclosed(windowevent e) dispose() により開放されたウインドウを消去すると呼び出される void windowclosing(windowevent e) ユーザがウインドウを閉じようとする時に呼び出される void windowdeactivated(windowevent e) ウインドウが非アクティブ化されると呼び出される void windowdeiconefied(windowevent e) ウインドウが非アイコン化されると呼び出される void windowiconified(windowevent e) ウインドウがアイコン化されると呼び出される void windowopened(windowevent e) ウインドウがオープンすると呼び出される

課題 フレームに部品を配置するプログラムを作成しなさい BorderLayout によりボタン 1, テキストエリア, ボタン 2 が配置 ボタン 1 をクリックするとテキストエリアに文字を埋める ボタン 2 をクリックするとテキストエリアをクリアする

import java.awt.*; import java.awt.event.*; class MyFrame extends Frame implements ActionListener { TextArea txtar1; Button btn1, btn2; public MyFrame(String title) { super(title); // タイトル設定 // 文字列表示のボタンを BorderLayout の北に配置 // テキストエリアを BorderLayout の中央に配置 // txtar1 = new TextArea(); // 文字列クリアのボタンを BorderLayout の南に配置 // 閉じるボタン対応 public void actionperformed (ActionEvent e) { // ボタン押下対応 if (e.getsource() == btn1) { txtar1.settext("aaaaaaaaaa nbbbbbbbbbb ncccccccccc n"); else if (e.getsource() == btn2) { txtar1.settext(""); public class JaFramKadai { public static void main(string args[]) { MyFrame frm = new MyFrame(" フレームテスト "); frm.setsize(300, 200); // 窓サイズを横 300, 縦 200 にする frm.setvisible(true) ; // フレームを表示する