甲府方重信Blog

...Shigenobu Koufugatas Blog

  • Increase font size
  • Default font size
  • Decrease font size
Error
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
Home 業務日誌 Adaプログラミング Adaチュートリアル セクション16.5 - Adaアプレットを書く

Adaチュートリアル セクション16.5 - Adaアプレットを書く

E-mail Print PDF

セクション 16.5 - Adaアプレットを書く

このセクションでは、私たちは最初のイベント・ドリブンのプログラミングを記述します。これはアプレットの基本的な考え方です。 (そして、ほとんどの他のグラフィカル・ユーザー・インターフェース・プログラムの考え方です). 私たちは、シンプルな「Hello, World」アプレットをAdaで確認します。このセクションは、その他の有益なアプレットの方法のリストも掲載しています。

イベント・ドリブン・プログラミング

ほとんどのグラフィカル・ユーザー・インターフェース(GUI)プログラムは、シンプルな線形な方法において「トップからボトム」の動作をしません。その代わり、ほとんどのGUIプログラムは、「イベント」を待つというコンポーネントとして構成されます。 (イベントには、マウス・ボタンがクリックされたなどがあります)  そのイベントが処理されると、コンポーネントは元に戻ってきますので、次のイベントを処理することができます。イベントは、待ち行例に入り、そのためプログラマーのプログラマーはいちどきに一つのイベントに対応するだけでよいのです。; 後のイベントは、消えることはありません。コンポーネントが元に戻ることは重要なことです。そうでない場合にはイベントは処理されません。このアプローチは、「イベント・ドリブン・プログラミング」と呼ばれています。

Adaのアプレットを作成するために、私たちはJavaのパッケージ「java.applet」のJava「Applet」クラスを拡張して新しい型を作成する必要があります。私たちは、Appletクラスの様々なメソッドを自身が興味があるイベントを処理させるために、上書きすることが出来ます。イベントに対するデフォルトのリアクションは、即座に返ります(つまり、何もしない)、それは私たちが上書きしていていないイベントは無視されることを意味します。

シンプルなAdaアプレット

Adaを使ってJavaアプレットをどのように実装するかの基本概念を示すために、シンプルなAdaアプレットを示します。次に示すのは、Tucker Taft氏によって書かれた標準的な「Hello World!」プログラムです。; このプログラムは、単純に「Hello, World!」のフレーズをスクリーンに表示します。:

with java.applet.Applet; use java.applet.Applet;
with java.awt.Graphics; use java.awt.Graphics;
package Hello is
 type Hello_Obj is new Applet_Obj with null record;
 procedure paint(Obj : access Hello_Obj; g : Graphics_Ptr);
end Hello;


with interfaces.Java; use interfaces.Java; -- for "+" on strings
package body Hello is
 procedure paint(Obj : access Hello_Obj; g : Graphics_Ptr) is
 begin
 drawString(g, +"Hello, Java world!", x => 10, y => size(Obj).height/2);
 end paint;
end Hello;

それでは、このプログラムは何をしているのでしょうか。ステップごとに分解してみましょう。:

  1. アプレットを作成するために、私たちはパッケージ java.apple.Appletで定義されているタグ付け型「Applet_Obj」を拡張しなければなりません。パッケージ java.applet.Appletが必要ですので、それを「with」しなくてはなりません。標準的なJavaパッケージの名前は、非常にシンプルにAdaパッケージの名前に対応していることを覚えておいてください。
  2. グラフィックを取り扱うために、パッケージjava.awt.Graphicsを必要とします。
  3. 「Hello」という名前の新しいパッケージを作成します。
  4. Javaライブラリーのタグ付き型「Applet_Obj」を拡張した新しいタグ付き型「Hello_Obj」を作成します。この新しい型は、既に説明した規則にしたがって、私たちの新しいアプレットを表現します。
  5. ほぼ全てのアプレットは、Applet_Objのデフォルトの「paint」操作を、何かより興味深いもので上書きします。「paint」操作は、アプレットによって制御されるグラフィック領域が、明らかになりなり描画される必要があるとシステムが決定した場合に呼び出されます。paint操作に対する引数は、アプレット自身を表現するオブジェクトと、アプレットの描画表面を表現するオブジェクトです。 (プログラマーは、java.applet.Appletのパッケージ使用を読むことによって、そのほかにどんな操作が定義されているかを知ることができます。).
  6. Helloのパッケージ本体部は、「interfaces.Java」をwithしています。このAdaのパッケージは、AdaからJavaへのインターフェースが必要なときに、有益な操作を提供します。Adaの文字列からJavaの文字列に変換する前置演算子「+」が特定の使用方法です。
  7. paintは、java.awt.Graphicsにおいてサブプログラム「drawString」に対する呼び出しを行うよう実装されています。このサブプログラムは、グラフィック表示領域「g」に指定されたテキストを描画します。「+」演算子がAda文字列からJava文字列(String_Ptr)への変換に使われていることに注意してください。より複雑なの式も同様に動作します。描画のy座標を与える式などがそうです。

プログラマーは上記のコードをコンパイルする必要があります。しかし、実行の状況を見るためには、このアプレットを参照するWebページが必要になります。このWebページは、APPLETコマンドを含んでいる必要があります。ここに、先のアプレットを参照するシンプルなWebページを掲載します。 (プログラマーは、このテキストをテキストエディターを使って、「hello.html」というファイルに入力してみましょう):

<HTML>
<HEAD><TITLE>Hello World</TITLE></HEAD>
<BODY>
<H1>Hello World</H1>
Below is the hello world applet.

<APPLET CODE="Hello.class" WIDTH=200 HEIGHT=100>
</APPLET>

</BODY>
</HTML>

「<APPLET」で始まるテキストは、WebブラウザーがJavaアプレットをすべきことを伝えます。 「CODE」の後ろのクオートされたテキストは、実行すべきプログラムを示します。The 「WIDTH」と「HEIGHT」パラメーターは、アプレットが使用するグラフィック領域の幅と高さをピクセルで指定します。ほかにもパラメーターがある可能性があります。特に、プログラマーがそのWebページと同じディレクトリーに動作させたいクラスがない場合には、プログラマーは「CODEBASE=」パラメーターを追加し、その実行すべきクラスのディレクトリーを与えます。

<APPLET>と</APPLET>の間のすべてのテキストは、Javaを取り扱わないWebブラウザーでは表示されてしまうでしょう。プログラマーがそのようなブラウザーを取り扱える場合には有益です。 (たとえば、プログラマーは彼らに静的な図や、フォームを与えることができます。). プログラマーは、アプレットにパラメーターを渡す領域として使用することもできます。

このアプレットを見るためには、JavaをサポートしているWebブラウザーを使って、このWebページを見ます。あるいは、アプレット視聴プログラムを実行します。 (Javaアプレットを実行するように設計されたプログラムです。) もし、プログラマーがJava対応のブラウザーを使用している場合は、プログラマーはHelloアプレットを今すぐ見ることができます。このページに戻ってくるには、ブラウザーの「戻る」ボタンを使用してください。

その他のアプレット・メソッド

JavaのAppletクラスの子孫は、「paint」の他にも役立つ事柄のために、メソッドを上書きすることが可能です。ここでは、これらのメソッドのいくつかを取り上げます。:

  1. initは、アプレットが起動した際に、その他のイベントが実行される前に呼び出されます。 プログラマーは、このメソッドをなんらかの変数の初期化のために上書きすることができます。ネットスケープは、アプレットがリロードされた場合、アプレットが含まれるページに戻った場合にもこのメソッドを呼び出します。そのため、複数回呼び出されることを取り扱うことが明確になります。
  2. stopは、ユーザーがアプレットが含まれているページをもはや見ない場合に呼び出されます。
  3. startは、アプレットにユーザーの注意が戻った場合に呼び出されます。そしてそのタイミングは、initメソッドの後です。
  4. mouseDownは、マウスボタンが押される度に呼び出されます。典型的な利用方法は、(ボタンのような)押されたアイテムをハイライトするためのものです。それによって、ユーザーが何を選択しているかをはっきりさせることになります。
  5. mouseUpは、アプレットの表示領域の中でマウスボタンが離された度に呼び出されます。多くの場合では、プログラマーはマウスが押された時点(mouseDown)ではなく、マウスボタンが離されたことに反応したい場合です。そのため、ユーザーはマウスを離すすることなく、マウスを移動することによって彼らの気持ちを変えることができます。
  6. mouseDragは、ユーザーがマウスボタンを押したまま、マウスを移動した場合に呼び出されます。
  7. keyDownは、アプレットがアクティブな間にキーが押された場合に呼び出されます。

このJavaライブラリーは、かなり拡張可能です。Sunのon-line Java documentationを参照いただくか、Javaについての多くの書籍のひとつをご覧ください。

出典: http://www.adahome.com/Tutorials/Lovelace/s16s5.htm

Last Updated on Monday, 27 August 2012 08:16  

ニュース速報

何千とある無料のエクステンションのライブラリより、あなたはサイトを拡張するために必要とするものを追加できます。 今すぐ Joomla! エクステンション ライブラリに目を通してください。