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 となりますね。