この章では,java.awtパッケージのクラスを使って文字列,図形,イメージを表示する簡単なアプレットの作り方を学びます.このパッケージには,さまざまなカラーやフォントを扱うクラスも用意されています.
最初のJavaアプレット
アプレットのソースプログラムは,アプレット対応形式にする必要があります.全てのアプレットの基本クラスはjava.applet.Appletクラスです.この基本クラスを継承して,アプレットを作成するので,アプレットの基本スタイルは,次のようになります.
import java.applet.Applet;
import java.awt.Graphics;
public class アプレット名 extends Applet
{
//メソッド
}
このソースプログラムをアプレット名.javaという名前で保存します.ここで,java.awt.Graphicsクラスがインポートされているのは,アプレットでは,一般に画面に文字列や図形などを表示するので,文字を
ここで,例えばアプレットで文字列を表示したい場合,メソッドは,
public void paint(Graphics g)
{
g.drawString("表示したい文字列",20,100);
}
のようになります.ここで,20と100は画面上のxとy座標を表します.
このようにして作成したアプレットをコンソールアプリケーションと同様にjavacでコンパイルすると,アプレット名.classというクラスファイルが作成されます.このクラスファイルはWebブラウザ上で動作させることになります.したがって,Webブラウザ上で表示させるためのHTMLファイルが必要となります.HTMLファイルには最小限,以下の事柄を記述する必要があります.
Javaアプレットを起動するHTMLプログラム |
HTML |
BODY |
APPLET code="アプレット名.class" WIDTH=250 HEIGHT=250 |
/APPLET |
/BODY |
/HTML |
import java.applet.Applet;
import java.awt.Graphics;
public class GreetingApplet extends Applet
{
public void paint(Graphics g)
{
g.drawString("Hello World", 50, 100);
}
}
実行結果
このソースコードを詳しく見ていきます.
1行目ではjava.applet.Appletクラス,2行目ではjava.awt.Graphicsクラスをインポートしています.Appletクラスは,すべてのアプレットの基本クラスです.Graphicsクラスは,AWT(Abstract Window ToolKit)によって提供されます.4行目では,GreetingAppletクラスがAppletクラスから派生することを示しています.次に,paint()というメソッドを定義します.このメソッドの役目は,アプレットの出力を生成することです.paint()はGraphicsオブジェクトを引数として受け取ります.文字列を実際に表示するのは,GraphicsオブジェクトのdrawString()メソッドです.このメソッドの1つ目の引数は,表示する文字列です,2つ目と2つ目の引数で,文字列の表示を開始する位置を指定します.
g.drawLine(x1,y1,x2,y2);を用いて点(10,10)と点(100,100)を結ぶ線を描画するアプレットを作成しなさい. |
Graphicsクラス
上の例題でjava.awt.Graphicsクラスの機能を利用しました.ここでは,このクラスについてより詳しく学びます.
Graphicsオブジェクトには,グラフィックスを出力するメソッド群がカプセル化されています.線(Line),楕円(Oval),四角形(Rectangle),多角形(Polygon),文字列(String),イメージ(Image),文字(Chars),弧(Arc)を描画することができます.
Graphicsクラスの主なインスタンスメソッド | |
void drawArc(int x, int y, int w, int h, | 座標x,yに左上隅が配置されるように幅w, |
int startAngle, int arcAngle) | 高さhの矩形に接する円弧を描く |
startAngleで開始角度を指定し | |
arcAngleで弧の展開角度を指定する | |
void drawImage(Image img, int x, int y, | 座標x,yに左上隅が配置されるように |
ImageObserver io) | imgを描画する.座標処理の進行状況は, |
ioに送られる | |
void drawLine(int x0,int y0, int x1, int y1) | 座標x0,y0とx1,y1を結ぶ線を描画する |
void drawOval(int x, int y, int w, int h) | 座標x,yに左上隅が配置される幅w |
高さhの四角形に接する楕円を描く | |
void drawPolygon(int[] x, int[] y, int n) | n個の頂点を持つ多角形を描画する. |
頂点の座標は,配列xとyの要素と | |
して引き渡す. | |
void drawPolyline(int[] x, int[] y, int n) | n個の頂点を持つ多角線を描画する. |
頂点の座標は,配列xとyの要素と | |
して引き渡す. | |
void drawRect(int x, int y, int w, int h) | 座標x,yに左上隅が配置される幅w, |
高さhの四角形を描画する | |
void drawString(String str, int x, int y) | strを座標x,yに描画する |
void fillArc(int x, int y, int w, int h, | 座標x,yに左上隅が配置されるように幅w, |
int startAngle, int arcAngle) | 高さhの矩形に接する円弧を |
startAngleで開始角度を指定し | |
arcAngleで弧の展開角度を指定し | |
塗りつぶす | |
void fillOval(int x, int y, int w, int h) | 座標x,yに左上隅が配置される幅w |
高さhの四角形に接する楕円を塗りつぶす | |
void fillPolygon(int[] x, int[] y, int n) | n個の頂点を持つ多角形を塗りつぶす. |
頂点の座標は,配列xとyの要素と | |
して引き渡す. | |
void fillRect(int x, int y, int w, int h) | 座標x,yに左上隅が配置される幅w, |
高さhの四角形を塗りつぶす | |
Color getColor() | 現在のオブジェクトのカラーを取得する |
Font getFont() | 現在のオブジェクトのフォントを取得する |
FontMetrics getFontMetrics() | 現在のオブジェクトのフォント |
メトリックスを取得 | |
void setColor(Color c) | グラフィックコンテキストの現在のカラー |
としてcを設定 | |
void setFont(Font f) | 現在のオブジェクトのフォントとしてfを |
設定 |
import java.applet.Applet;
import java.awt.Graphics;
public class FirstShapes extends Applet
{
public void paint(Graphics g)
{
g.drawRect(30,30,80,50);
g.drawOval(120,30,50,50);
g.drawArc(180,30,50,50,0,135);
g.fillRect(30,100,80,50);
g.fillOval(120,100,50,50);
g.fillArc(180,100,50,50,0,135);
}
}
実行結果
Colorクラス
java.awt.Colorクラスを用いて描画と背景に色を使うことができます.使用頻度の高い色はColorオブジェクトとしてフィールド値が用意してあります.次の13色です.
black | blue | cyan | darkGray |
gray | green | lightGray | magenta |
orange | pink | red | white |
yellow |
これらを用いるには
g.setColor(Color.blue);
のように用います.
次に,赤,緑,青の3色を混合させたRGBモデルで色をしてすることができます.
g.setColor(new Color(255,0,0);
で赤色を指定することができます.
Colorオブジェクトには,色に関するメソッド群がカプセル化されています.
Colorクラスの主なインスタンスメソッド | |
static int HSBtoRGB(float h, float s, float b) | h,s,bで指定された色相,彩度,明度を |
int型の値にコード化して返す | |
static int RGBtoHSB(float h, float s, float b) | r,g,bで指定されたred,green,blueの要素 |
からなるカラーを色相,彩度,明度の | |
float型配列に変換して返す | |
Color brighter() | 現在のオブジェクトの色を明るくした |
オブジェクトを返す | |
Color darker() | 現在のオブジェクトの色を暗くした |
オブジェクトを返す | |
int getBlue() | 現在のオブジェクトのブルー値を返す |
int getGreen() | 現在のオブジェクトのグリーン値を返す |
int getRGB() | 現在のオブジェクトのRGB値を返す |
int getRed() | 現在のオブジェクトのレッド値を返す |
座標30,30に幅80高さ50の四角形,座標120,30に長軸50,短軸50の楕円,座標180,30に幅50,高さ50に接する0〜135°の弧およびこれらをy軸方向に70平行移動し青く塗りつぶした図形を描画するアプレットを作成しなさい. |
テキストの表示
drawString()メソッドを用いて文字列を表示する方法はすでに学びました.