| 3. 色とフォントを変える |
前回まではアプレットを使って簡単な文字や図形を書きました。しかし、色はすべて黒でした。今回はまず、いろんな色を使って絵を描いてみます。 3つの引数は赤、緑、青の明るさを0〜255で指定します。 256x256x256通りの色を作ることができます。
色やフォントの変え方について説明します。
(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);
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) フォントの変更 |
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);
}
}
|
<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 となりますね。