Applet アプレット ◇長い長いアプレット講座◇.

Slides:



Advertisements
Similar presentations
オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
Advertisements

Ver 準備 Java フォルダに移動して …… mkdir Swing Swing フォルダに移動して …… cp ~gundam/Java/Swing. コマンドプロンプト ( JDK ) でないと起動 しないので注意!!!
ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
社会人学習講座 「Javaプログラミング概論」
GridLayout オブジェクト(省略)
         第9回 Swing.
Imageの描画 画像を読み込んで表示すること。 import java.awt.*;が必要。
Applet 岡部 祐典 鈴木 敬幸.
JAVA GUIプログラミング 第6回 TextFieldとLabel.
第5回 iPhoneアプリ開発勉強会 Objective-C 「継承とクラス」
オブジェクト指向言語 第12回 アプレット.
JAVA GUIプログラミング 第1回 JAVAの実行 絵を描こう.
アプレット (Applet)について.
1.Java 概要 2.簡単なアプレット 3.動画を表示するアプレット 4.アプレットの改良 5.開発環境の利用(データベース)
Iアプリプログラミング その1  鳥居秀徳.
アルゴリズムとプログラミング (Algorithms and Programming)
ネットワークプログラミング論 平成27年10月12日 森田 彦.
Javaのインタフェース についての補足 2006年5月17日 海谷 治彦.
JAVA.
JAVA GUIプログラミング 第5回 ボタンとそのイベント処理.
社会人学習講座 「Javaプログラミング概論」
インタフェース プログラミング 第14回 インタフェース プログラミング第14回.
Javaプログラムの実行まで バイト Javaの コード 実行 ソースコード Java ファイル名 ファイル名 abc.java
第14回独習Javaゼミ セクション1~3 発表者 直江 宗紀.
アプレット プログラミング 第10回 アプレット プログラミング第10回.
ネットワークプログラミング論 平成28年10月17日 森田 彦.
RMI ソフトウェア特論 第6回 /
第6回独習Javaゼミ 第6章 セクション4~6 発表者 直江 宗紀.
プログラミング演習3 第2回 GUIの復習.
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
ソフトウェア工学 知能情報学部 新田直也.
グラフィックス、その1 色の表示 フォントを変えて文字を表示 直線、四角形、楕円形の描画 円弧の描画 多角形の描画
アルゴリズムとデータ構造演習(6月24日) グラフィックス、その2 テキストフィールドで入力する チェックボックスで1つ以上指定する
Java入門 13.5カラーの使用 13.6テキストの表示                  2003/12/12                   紺野憲一.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
第15回独習Javaゼミ セクション14~15 発表者 直江宗紀.
プログラミング演習3 第3回 ミニプロジェクト.
TCanvas BCB:TCanvasクラスでグラフィックを扱う。 TFormなどもプロパティとして持っている。
第11週:super/subクラス、継承性、メソッド再定義
プログラミング演習3 第2回 GUIの復習.
プログラミング基礎a 第10回 Javaによる図形処理入門(2) GUIの使い方
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
JAVA入門後期③ JAVAのGUI (JavaのGUI基本構造、いろいろなアプレット)
JAVA入門後期⑥ JAVAのAWTの基本構造 (レイアウトマネージャー、 ウインドウ型アプリケーション)
Java8について 2014/03/07.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
プログラミング基礎a 第10回 Javaによる図形処理入門(2) GUIの使い方
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
JAVA入門後期④ イベント、AWT、の基本構造、スレッド
システムエンジニアリング演習 GUIの実現(1):AWT 11月6日.
アルゴリズムとプログラミング (Algorithms and Programming)
ソフトウェア工学 知能情報学部 新田直也.
JAVA GUIプログラミング 第3回 イベント処理① マウスイベント.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
システムエンジニアリング演習 GUIの実現(2):イベント処理 11月13日.
C#プログラミング実習 第3回.
サブゼミ第7回 実装編① オブジェクト型とキャスト.
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
5.基本API 5-1 レイアウト ウィジェットの並べ方を指定するには、 パレットのレイアウト(Layoutでは以下の8種類)を配置する。
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

 Applet アプレット ◇長い長いアプレット講座◇

◇ 準備 フォルダ名 Applet ソースのコピー元 ~wanko/Java/Applet2/* . シンボリックリンク作成 フォルダ名           Applet ソースのコピー元          ~wanko/Java/Applet2/* . シンボリックリンク作成          cd ~/public_html          ln –s ~/Java .

◇ シンボリックリンク あるファイルに対してその本来のフルパスに加えて、別のパスからによるアクセスも可能にする どちらか一方が修正されるともう一方も修正される windowsのショートカットと似たような役割

1,Appletの実行 アプレットとはwwwブラウザから直接実行できる形式のプログラム (前章までのはアプリケーション) 実行方法は二つ   (前章までのはアプリケーション) 実行方法は二つ ブラウザから呼び出す コマンドラインで直接(デバックなどに有効)

◇ Hello.java 画面にHelloと表示させるアプレット 1 import java.awt.Graphics; 2 import java.applet.Applet; 3 4 public class Hello extends Applet{ 5 public void paint(Graphics g){ 6 g.drawString("Hello",100,20); 7 } 8 }

◇ Hello.java解説 4 public class Hello extends Applet Appletクラスを元の部品として新しいHelloクラスに継承する 5 public void paint(Graphics g) 描画するためのGraphicsクラスを引数として受け取りGraphicsオブジェクトのメソッドとして描画 6 g.drawString(文字,x座標,y座標); GraphicsクラスのdrawStringメソッドで文字列を ブラウザへ表示

◇ Appletの注意点 この状態だけでコンパイルしてもエラーが出る なぜ? ブラウザで表示させるためのhtmlが必要 アプリケーションとは違いmain()メソッドは必要ない    ブラウザで表示させるためのhtmlが必要

◇ Hello.html Hello.classを呼び出すためのhtml 1 < html> 2 < body> 3 < applet code=Hello.class width=300 height=100> 4 < /applet> 5 < /body> 6 < /html> 起動 http://noisy.cs.dm.u-tokai.ac.jp/~自ID/Java/Applet/Hello.html

◎ 演習1:Hello2.java 下記のような文字が表示されるアプレットHello2.javaを書け

◎ 演習1:解答 1 import java.awt.*; 2 import java.applet.*; 3 public class Hello2 extends Applet{ 4 public void paint(Graphics g){ 5 g.drawString(“Javaの道は", 20, 20); 6 g.drawString(“一日にしてならず", 30, 30); 7 g.drawString(“読み人知らず", 40, 40); 8 } 9 }

◇ サブクラスとスーパークラス プログラムの一部を書き換えたい! 丸ごとコピーするのは大変! 継承:サブクラス、スーパークラス

◇ サブクラスとスーパークラス(続き) 1 class A { 2 void hello(){ 3 System.out.println("Hello"); 4 } 5 void bye(){ 6 System.out.println("Bye"); 7 } 8 } 9 class B extends A { 10 void hello(){ 11 System.out.println(“こんにちわ"); 12 } 13 }

◇ サブクラスとスーパークラス(続き) 9 class B extends A 新しいクラスBはクラスAを継承 hello() bye()はそのまま クラスAのもの。 hello()だけ変更 hello() bye() bye() クラスA スーパークラス クラスB サブクラス

◇ オーバーライド 11行目でhello()について新しく書き換えられている。このプログラムを実行した際、優先されるのはクラスBのhello() メソッドのオーバーライド スーパークラスとサブクラスで同じメソッドが存在した場合、サブクラスのメソッドが優先されること 上書き処理ではないので注意

2,グラフィックス基本メソッド Graphicsクラスにあるいろいろなメソッド drawLine(int x1, int y1, int x2, int y2) 座標 (x1, y1) と座標 (x2, y2) との間に線を引く drawArc (int x, int y, int width, int height, int startAngle, int arcAngle) 円弧または楕円弧の輪郭 を描く drawOval(int x, int y, int width, int height) 楕円の輪郭を描く drawRect(int x, int y, int width, int height) 指定された矩形の輪郭を描く

◇ Draw.java グラフィックステスト 1 public class Draw extends Applet{ 2 public void paint(Graphics g){ 3 g.drawLine(10,10,100,200); 4 g.drawOval(30, 30, 20, 20); 5 g.drawArc(100, 30, 20, 20, 30, 120); 6 g.drawRect(150, 10, 200, 180); 7 } 8 }

◎ 演習2:パックマン到来 下のようなパックマンを書くPac.java を書け どのお絵かきメソッドを使うべきか?

◎ 演習2:解答 1 import java.awt.*; 2 import java.applet.Applet; 3 4 public class Pac extends Applet{ 5 public void paint(Graphics g){ 6 g.setColor(Color.green); 7 g.fillArc(100,100,50,50,30,300); 8 } 9 } 6 setColor() 色を設定する。 7 fillArc()  drawArc()の塗りつぶしバージョン

3,データの引渡し アプリケーション argv経由でのデータ入力 アプレット htmlの中で指定 実行中直接キーボードなどのイベントを経由

◇ Hello3.java html文章からデータを受け取り表示する 1 import java.awt.Graphics; 2 import java.applet.Applet; 3 4 public class Hello3 extends Applet{ 5 public void paint(Graphics g){ 6 String a = getParameter("text"); 7 g.drawString("Hello",100,20); 8 g.drawString(a,100,80); 9 } 10 }

◇ Hello3.html Hello3.javaを呼び出すhtml 1 <html> 2 <applet code="Hello3.class" width=20 height=80> 3 <param name="text" value="Chao"> 4 </applet> 5 </html>

◇ Hello3.java解説 Java 6 String a = getParameter("text"); html 指定した名前のデータを文字列型で取り出す html 3 <param name="text" value="Chao"> nameというものがパラメータの名前 valueの中身が返される値

4,MouseEvent マウスクリック MouseEvent MouseListener マウスの動きに関したイベント 下記のイベントを受け取るためのリスナーインタフェース mousePressed マウスボタンが押されると発生 mouseReleased マウスボタンが離されると発生 mouseClicked マウスボタンが押されてから離されると発生 mouseEntered マウスがコンポーネント領域に入ると発生 mouseExited マウスがコンポーネント領域から出ると発生

◇ Pacman.java マウスクリックした位置にパックマンを表示 1 import java.applet.*; 2 import java.awt.*; 3 import java.awt.event.*; 4 5 public class Pacman extends Applet 6 implements MouseListener { 7 int x, y; 8 9 public void init() { 10 x = 50; y = 50; 11 addMouseListener(this); 12 } 13 public void paint(Graphics g) { 14 g.setColor(Color.green); 15 g.fillArc(x - 10, y - 10, 20, 20, 30, 300); 16 } 17 } 18 public void mouseClicked(MouseEvent e) { 19 x = e.getX(); 20 y = e.getY(); 21 repaint(); 22 } 23 public void mouseEntered(MouseEvent e) { 24 } 25 public void mouseReleased(MouseEvent e) { 26 } 27 public void mouseExited(MouseEvent e) { 28 } 29 public void mousePressed(MouseEvent e) { 30 } 31 }

◇ Pacman.java解説 9 public void init() 11 addMouseListener(this) 変数などの部品の初期値を入れて定義 プログラムの前準備 11 addMouseListener(this) addMouseListner メソッドを()内のthisによってPacmanクラスに 設定し、関連するマウスイベントを受け取るように登録されている すべてのMouseListenerオブジェクトまたは MouseAdapter オブジェクトに渡される

◇ Pacman.java(続き) 23~30行目の定義は必要なのか? 結論:必要!ないとエラーが出る インターフェース implement メソッドのないクラスの定義。定数の定義やメソッドの宣言(中身なし)からなっている。MouseEventを扱うために定義しなければならないメソッドをすべて宣言しておけば、実行時にメソッドが不足することをコンパイル時に検出できる。 implement そのクラスで利用するインターフェースを指定することをインターフェースを実装する(implement)という

◎ 実習1:Pacman2.java Pacman.javaを元にして,マウスを押している間はピンク,マウスを離したら赤で移動するPacman2.javaを書け. ヒント mouseClickedは押されてから離されると起動 今回必要なイベントは? 色の塗り替えはsetColor()メソッド 引数はColorオブジェクト・・・例:setColor(Color.green) setColor()メソッドを使うときはg.setColor()で塗る場所指定 (Graphics g)の設定はpaintメソッドで指定されているからそのまま別のメソッドでは使えないが?

◎ 実習1:解答例 1 import java.applet.*; 2 import java.awt.*; 3 import java.awt.event.*; 4 5 public class Pacman2 extends Applet 6 implements MouseListener { 7 int x, y; 8 Color clr; 9 10 public void init() { 11 x = 50; y = 50; 12 addMouseListener(this); 13 } 14 public void paint(Graphics g) { 15 g.setColor(clr); 16 g.fillArc(x - 10, y - 10, 20, 20, 30, 300); 17 } 18 public void mouseClicked(MouseEvent e) { 19 x = e.getX(); 20 y = e.getY(); 21 repaint(); 22 } 23 public void mouseEntered(MouseEvent e) { 24 } 25 public void mouseReleased(MouseEvent e) { 26 clr = Color.red; 27 repaint(); 28 } 29 public void mouseExited(MouseEvent e) { 30 } 31 public void mousePressed(MouseEvent e) { 32 clr = Color.pink; 33 repaint(); 34 } 35 }

5,MouseMotion マウスの動きのイベント MouseMotionListener 下記のイベントを受け取るためのリスナーインタフェース mouseDragged コンポーネント上でマウスボタンが押された後ドラッグされたときに呼び出される mouseMoved コンポーネント上でマウスが移動される(ボタンは押されない)と呼び出される

◇ Draw2.java マウスの動きに合わせて線を引く 1 import java.applet.*; 2 import java.awt.*; 3 import java.awt.event.*; 4 5 public class Draw extends Applet 6 implements MouseMotionListener { 7 int x, y; 8 Color c; 9 Graphics g; 10 11 public void init() { 12 x = 50; y = 50; 13 c = Color.green; 14 addMouseMotionListener(this); 15 g = getGraphics(); 16 } 17 public void paint(Graphics g) { 18 } 19 public void mouseDragged(MouseEvent e){ 20 } 21 public void mouseMoved(MouseEvent e){ 22 int x2 = e.getX(); 23 int y2 = e.getY(); 24 g.drawLine(x, y, x2, y2); 25 x = x2; 26 y = y2; 27 } 28 }

◇ Draw2.java解説 14 addMouseMotionListener(this); 15 g = getGraphics(); Pacman.javaのときと同様にthisによって自分のいるDrawクラスに設定し、MouseMotionというイベントをキャッチする 15 g = getGraphics(); コンポーネントのGraphicsコンテキストを作成する 24 g.drawLine(x, y, x2, y2); Graphicsオブジェクトが設定されているのは17~18行目のpaintメソッド。よってmouseMovedイベントでは変数gはそのままでは使用できない  インスタンス変数の使用

◇ インスタンス変数 インスタンス変数 ローカル変数 クラスの中で定義されたすべてのメソッドから参照することができる あるクラスのインスタンスが存在し続ける間、情報を保持し続ける変数 ローカル変数 メソッド内で定義してその中でのみ通用する変数 メソッドの実行が終われば消えてしまう

◎ 演習3:一筆書き講座 Draw2.javaを改良して,次のようにマウスの左ボタンを押している間だけ先が引ける Draw3.java を書け.

◎ 演習2:解答 1 import java.applet.*; 2 import java.awt.*; 3 import java.awt.event.*; 4 public class Draw3 extends Applet 5 implements MouseMotionListener { 6 int x, y; 7 Graphics g; 8 9 public void init() { 10 x = 50; y = 50; 11 addMouseMotionListener(this); 12 g = getGraphics(); 13 } 14 public void paint(Graphics g) { 15 } 16 17 public void mouseDragged(MouseEvent e){ 18 int x2 = e.getX(); 19 int y2 = e.getY(); 20 g.drawLine(x, y, x2, y2); 21 x = x2; 22 y = y2; 23 } 24 public void mouseMoved(MouseEvent e){ 25 } 26 }