総合科目

Java文法および例題の説明

情報科学科 西田 友是

 

 

  1. JavaによるCG

 

 Javaとは、SunMicrosystems社が開発したプログラム開発言語である。基本的にはCBasicなどといったソフトウェア開発言語と同じである。C++によく似ているが、ポインタなどが無くなったため、バグなども少なく、わかりやすい開発言語である。また、Javaには他の言語にはない新しい機能が多くあり、以下にその特徴を示す。

 

1)Javaで作ったプログラムはホームページの中で動作する

2)コンピュータは大別するとIBM-PC互換機やPC-98Macintosh、ワークステーションの3つに分けることができるが、どの機種でも動作する。

3)Javaはネットワークに対応しているので、Javaのあるホームページを見ると、ブラウザはそのアプレットをサーバからネットワークを通じて自分のコンピュータにダウンロードし、実行することができる。

4)セキュリティの面では、JAVAで作られたアプレットやアプリケーションは実行する前にJavaインタプリンタでチェックを受けるのでコンピュータウィルスやバグがあるプログラムは実行して悪影響を及ぼす前にほとんど摘出することができる。

5)マルチスレッド機能を実現している。スレッドとはCPUが実行できるプログラムの単位で、マルチスレッド機能とは、複数のスレッドを同時に実行できる機能のことである。 実際には、 CPUは1つしかないので、1度に実行しているスレッドは1つであるが複数のスレッドを高速に 切り替えて実行しているので、見かけは同時に実行しているように見える。

 

2.Javaのコンパイルおよび実行

 

Javaを実行する方法としては、Javaインタープリタで実行する方法とWebブラウザに表示する方法がある。単独で動作すアプリケーションとWebブラウザに表示するアプレットがある。アプレットの場合、HTMLファイルにJavaのバイトコードの名前を記述する。

 

コマンド

機能

Javac

プログラミング言語 Java のコンパイラ

Java

Java アプリケーションの起動コマンド

appletviewer

Web ブラウザなしでアプレットの実行やデバッグが可能

Javadoc

API ドキュメントジェネレータ

 

3.JDKのバージョンについて

 

JDKのバージョンはJDK.1.0からJDK1.2まである。ただし、機種により最新版は異なる。JDK.1.0JDK1.1以降とでは相違がある。主要な 相違点は、 マウス等のイベント処理、スクリーンのサイズの取得方法が違う。新しいバージョンでコンパイルする場合、古いバージョンのものは警告が表示される。新バージョンの文法に従う方が推奨されている。しかし、まだ古いバージョンのブラウザを使用している人もあるので、インターネットで公開する際は古いバージョンで作成する方が安全とも言える。

 

 

 

4. グラフックに必要なJavaの文法

 

本稿では、グラフックへの応用が主であるのでアプレットを中心に説明する。

 

4.1 アプレットのメソッド

1) 単純な構造の場合;

Import Java.applet.*;

Import Java.awt.*;

 

public class Graphics extends Applet

{

public void init( )

{

// 初期化プログラムの挿入

}

public void paint(Graphics g)

{

// 表示プログラムの挿入

 

2) 標準的な場合;

Import Java.applet.*;

Import Java.awt.*;

 

public class Graphics extends Applet

{

public void init()

{

// 初期化プログラム(appletロード時に実行)

}

public void start()

{

// applet開始時に実行

}

public void stop()

{

// applet停止時に実行

}

public void destroy()

{

// appletアンロード時に実行

}

public void paint(Graphics g)

{

// 表示プログラムの挿入

 

 

4.2 アプレットの実行

 

アプレットはWebブラウザあるいはappletviewerで表示する。実行するにはHTMLファイルが必要である。

HTMLファイル中では次のように記述する。

 

 

<APPLET CODE=test.class width=350 height=330> </APPLET>

 

 

ここで、CODE=クラス名、 width=横幅、 height=高さ

必要に応じて、パラメータを入力するには、下記のように指定する(変数data 0を代入例)

<APPLET CODE=test.class width=350 height=330>

<PARAM NAME="data" VALUE="0">

</APPLET>

 

4.3 配列の宣言

 

形式

配列サイズの宣言例

データの型 [ ] 配列名;

double[ ] a;

Int[ ] a;

a = new int[10];

データの型 配列名[ ];

double a[ ];

Int[ ] a = new int[10];

 

 

4.4 オブジェクトの生成方法

 

定義したクラスをもとにnew演算子を使ってオブジェクトを生成する。この生成には次の2通りある。

 

オブジェクトの生成方法

クラス名 変数名;

変数名 = new クラス名;

Face polygon;

polygon = new Face();

クラス名 変数名 new クラス名;

Face polygon = new Face();

 

 

4.5 Javaで使用できる図形

 

図形要素

書式

直線

drawLine(int1, nt y1, int x 2, int2) (x1,y1) から(x2,2)へ直線を引く

長方形

drawRect (int, int, int width, int height) 線画

fillRect(int x, int , int width, int height) 塗りつぶし

clearRect(int x, int y, int width, int height ) 長方形を背景色で塗りつぶす

(x,y)は左上角の座標、 widthheightは横幅と高さ

丸角長方形

drawRoundRect(int, int, int width, int height, int arcWidth, int arcHeight)

fillRoundRect (int, int, int width, int heightint arcWidth, nt arcHeight)

(x,y)は左上角の座標、Width, heightは横幅と高さ, arc Width,arc Heightはコーナーの丸くする部分のサイズ

3D長方形

draw3Drect(int, inty, int width, int height, boolean raised)

fill3Drect(int, int, int width, int height, boolean raised)

(x,y)は左上角の座標、width, heightは横幅と高さraisedは陰影の付け方で、trueは長方形が「飛び出したように」 falseならば「窪んだように」表示される

楕円

drawOval(int, int , int width, int height)

fillOval(intx、int, int widthint height )

(x,y)は左上角の座標widthheightは楕円を囲む長方形の横幅と高さ

円弧

drawArc(intx、int, int width, int height, int startAngle, int arc Angle)

fillArc(int x, int , int width, int height, int startAngle, int arcAngle)

drawArcは円弧、fillArcは塗りつぶした扇型を描く

(x,y)は左上角の座標、widthheightは横幅と高さ,

startAnglearcAngleは円弧を描き始める角度と角度の量の度数

多角形

drawPolygon(int xPoint , int yPoint , int nPoint)

fill Polygon(int xPoint, int yPoint int nPoint)

Point、yPoint は多角形の各頂点のx, y座標の配列、nPointは頂点の個数

文字例

drawString(String str, nt x, int) 左下座標を(x,y) として、文字列strを描く

画像表示

drawImage((Image img, int x, int y, c) 左下座標を(x,y) として画像imgを表示

 

なお、点(画素)の描画は特に無いので、下記のどちらかで指定する。

g.drawLine(x,y,x,y);

g.fillRect(x,y,1,1);

 

    1. スクリーン座標およびサイズ
    2. スクリーンのサイズを width × height の場合、 Javaで使用するスクリーンの座標系は左上が原点(0 0)であり、右下の座標が (width-1, height-1)である。スクリーンの中心(x0, y0)を原点とする座標(x, y)は、(x+x0, y0-y)のように変換して描画する必要がある。

      スクリーンのサイズはHTMLファイル(4.2参照)で指定できる。また、プログラム内でスクリーンのサイズを得るには下記の方法がある。

       

       

      Sizeの取得

      Sizeの設定

       

      JDk1.0

      Dimension appsize = size();

      width = appsize.width;

      height = appsize.height;

       

      resize(width, height);

      resize(Dimension);

      JDK.1.1

      width = getSize().width,

      height = getSize().height

      setSize(width, height);

      setSize(Dimension);

       

       

       

    3. 色の指定

 

  1. 色の指定の方法
  2.  

    次のように3通りある(白の例)

     

    g.setColor(new Color(255,255,255) );

    g.setColor(Color.white);

    Color shiro = Color.white;

    g.setColor( shiro );

     

  3. 定義済みの色;

 

 

Colorクラスの変数

RGB

Color.white

255255255

Color.lightGray

明るい灰色

192192192

Color.gray

灰色

128128128

Color.darkGray

暗い灰色

646464

Color.black

000

Color.red

25500

Color.pink

ピンク

255175175

Color.orange

オレンジ

2552000

Color.yellow

2552550

Color.green

0 2550

Color.magenta

マゼンタ(赤紫色)

2550255

Color.cyan

シアン(青緑色)

0255255

Color.blue

00255

 

 

4.7 Mathクラス

 

代表的なメソッドを下表に示す。

 

種類

メソッド

引数の型

戻り値の型

sin

Math.sin(d)

double、ラジアン

double

平方根

Math.sqrt(d)

double

double

絶対値

Math.sbs(a)

double, float, int, long

aと同じ

指数

Math.exp(d)

double

double

べき乗

Math.pow(x, y)

double

double

最大

Math.max(a, b)

double, float, int, long

aと同じ

対数

Math.log(d)

double

ouble

乱数

Math.random()

なし

double0. 1.の間)

 

なお、定数としてはπを表すMath.PIなどがある。

 

4.8 パッケージ

 

関連のあるクラスをまとめたものをパッケージまたはクラスライブラリと呼ぶ。プログラム中で使用する場合は、プログラムの最初の部分で import 文で呼び出す。

 

パッケージ名

内容

Java.applet

アプレットを実行するためのクラス

Java.awt

ボタンやスクロールバーなどのGUIを使うためのクラス

Java.event

イベント処理のためのクラス

Java.lang

文字列などの基本的なクラス

Java.util

日付や乱数を使うためのクラス

 

4.9 レイアウト

 

種々のGUI部品を配置を画面で行なうには、レイアウトマネージャが使われる。特に指定しない場合には、FlowLayout が使用される。これを含み下記の5つのレイアウトマネージャがある。

レイアウト

機能

FlowLayout

部品を横1行に並べる

BorderLayout

部品を上下、左右、中央に配置する

GridLayout

部品をタイル状に表の中に配置する

GridBagLayout

異なる大きさの部品をタイル状に配置する

CardLayout

部品をカードをめくるように順番に配置する

 

 

    1. イベント処理

 

GUI部品からの入力を処理することをイベント処理という。GUI部品の主なものとして、ボタン、チョイス、チエックボックス、スクロールバー、テキストフィールドなどがある。イベント処理は、JDK1.0では主にactionメソッドが使用されるが、JDK1.1ではイベントリスナが使用される。

代表的なマウスの利用を説明する。下記はマウスでクリックした点の座標を入力し、点pに代入する例である(関係部分のみ記述)。

 

1)JDK1.1以後の形式で記述したもの

 

import Java.applet.*;

import Java.awt.*;

import Java.awt.event.*;

 

public class test extends Applet implements MouseListener{

 

public void mousePressed(MouseEvent e) {

}

public void mouseClicked(MouseEvent e) {

Point p = new Point(e.getX(), e.getY());

}

public void mouseReleased(MouseEvent e) {

}

public void mouseEntered(MouseEvent e) {

}

public void mouseExited(MouseEvent e) {

}

public void mouseMoved(MouseEvent e) {

}

}

 

ここで、mouseClicked しか使用しなくてもmouseReleased等他のすべてのもの記述しておくこと。

 

2)JDK1.0の形式で記述したもの:

 

import Java.applet.*;

import Java.awt.*;

 

public class test extends Applet {

public boolean mouseDown(Event evt, int x, int y) {

Point p = new Point(x,y);

return true;

}

}

 

 

4.11 図形要素のサンプルアプレット

上の図形要素の記述例(一部省略)

 

g.drawImage(image, 320, 40, c); // draw an image