3. 色とフォントを変える

色やフォントの変え方について説明します。

(1) 色の変更

 前回まではアプレットを使って簡単な文字や図形を書きました。しかし、色はすべて黒でした。今回はまず、いろんな色を使って絵を描いてみます。

 Java では色を扱うとき、java.awt.Color クラスを使います。色もオブジェクトとして扱います。 Color クラスにはいくつかの static 変数があります。Color.white,Color.red,Color.blue,Color.yellow,...などです。

 これらの色を使って絵や文字を書くには、Graphics クラスの setColor(Color c) メソッドを使います。このメソッドの引数は Color オブジェクトをとるので、先ほどの static 変数を指定してやれば良いわけです。

 API ドキュメントを見るとたくさんの static 変数があり、いろいろな色を指定できますが、この中にない色を使いたい場合は、Color クラスのコンストラクタを使って色を作ります。

Color c = new Color(int r,int g,int b);

 3つの引数は赤、緑、青の明るさを0〜255で指定します。 256x256x256通りの色を作ることができます。

  MyColor.java

import java.awt.Graphics;
import java.awt.Color;
import java.applet.Applet;

public class MyColor extends Applet {
    public void paint(Graphics g) {
        g.setColor(Color.red);
        g.drawString("Hello! Everyone!",10,30);
        
        Color c = new Color(255,0,255);
        g.setColor(c);
        g.drawString("Hello! Everyone!",10,60);
    }
}


  MyColor.html

<HTML>
<BODY>
<APPLET CODE="MyColor.class" width="200" height="100">
</APPLET>
</BODY>
</HTML>


実行例  (画像をクリックすると実際のアプレットが起動します)

1度色を設定すると、それ以降の描画は設定した色になります。ブラウザで実行したとき、背景色を白にしたければ、setBackground(Color.white) を init( ) に入れます。



(2) フォントの変更

 では次にフォントを変えてみましょう。 フォントもやはりオブジェクトとして扱っていきます。java.awt.Font クラスで設定をします。

Font f = new Font(String fontname,int style,int size);

 Fontクラスのコンストラクタの引数を見てきましょう。 まず、1つ目はフォント名を文字列で指定します。 たとえば、 Dialog や SansSerif のようなものです。ここで指定するフォント名は論理フォント名と呼ばれます。論理フォント名はコンピュータ上に存在しているフォント名(これをフォントフェースといいます)に結びつけられています。

 2つ目はフォントのスタイルです。これはFontクラスの static 変数を使います。 普通はFont.PLAIN、太字は Font.BOLD、斜体は Font.ITALIC を指定します。3つ目はフォントのサイズです。これは適当な値を整数で指定します。

 フォントオブジェクトができたら、これを Graphics クラスの setFont(Font f) メソッドで設定します。

  MyFont.java

import java.awt.Font;
import java.awt.Graphics;
import java.applet.Applet;

public class MyFont extends Applet {
    Font f;

    public void init() {
        f = new Font("Dialog",Font.BOLD,24);
    }

    public void paint(Graphics g) {
        g.setFont(f);
        g.drawString("Hello! Everyone!",10,50);
    }
}


  MyFont.html

<HTML>
<BODY>
<APPLET CODE="MyFont.class" width="220" height="100">
</APPLET>
</BODY>
</HTML>


実行例  (画像をクリックすると実際のアプレットが起動します)


 さて、フォント名の指定として Dialog と SansSerif をあげましたが、実際に使えるフォントは実行しているコンピュータに依存します。今使っているコンピュータでどんなフォントが使えるか調べるには、 次のプログラムを実行してみてください。

  FontNames.java

import java.awt.*;

class FontNames {
    public static void main(String args[]) {
        GraphicsEnvironment ge =
            GraphicsEnvironment.getLocalGraphicsEnvironment();
        String fontnames[] = ge.getAvailableFontFamilyNames();
        for (int i=0;i<fontnames.length;i++) {
            System.out.println(fontnames[i]);
        }
    }
}

 このプログラムはアプリケーションなので実行は java FontNames となりますね。

前の章(2.グラフィックス)   次の章(4.画像と音声)