Java フォントや色の設定を変更する方法。

Javaでは、フォントや色を変更するためのクラスやメソッドが多く用意されていますので、ウィンドウのデザインを簡単に変えることができます。

今回はラベルやテキストエリアのフォント、スタイル、サイズ、文字の色を変えたり、ボタンの背景色を変えてみます。


【1】sample205 フォルダをフォルダごとコピーして、sample206 フォルダを作ります。

java-472.gif


【2】今回は以下のようなファイル構成になりますので、コピーした余計なものは削除してください。

java-465.gif

*SampleDb030.class を忘れないようにしてください。


【3】PrefTest.java を以下のように変更します。

*「\」はWindowsではエンマークのことです。

保存先 C:\java\sample206
ファイル名 PrefTest.java

import java.awt.*;
import java.awt.event.*;
import java.sql.*;

class PrefFrame extends Frame implements ActionListener {
  Label lb1;
  TextArea txtar1;
  Button btn1, btn2, btn3;

  public PrefFrame(String title) {
    //フレームのタイトル
    setTitle(title);

    //ウィンドウを閉じる時
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    });

    //ラベル
    lb1 = new Label("ボタンをクリックしてください。", Label.CENTER);
    Font f = new Font("Serif", Font.BOLD, 14);
    lb1.setFont(f);
    lb1.setForeground(Color.blue);
    add(lb1, BorderLayout.NORTH);

    //テキストエリア
    txtar1 = new TextArea();
    txtar1.setFont(new Font("Dialog", Font.PLAIN, 16));
    txtar1.setForeground(new Color(64, 64, 64));
    add(txtar1, BorderLayout.CENTER);

    //パネル
    Panel pn1 = new Panel();
    pn1.setLayout(new GridLayout(1, 3));

    //ボタンの設定とパネルへ追加
    btn1 = new Button("表示");
    btn1.addActionListener(this);
    pn1.add(btn1);
    btn2 = new Button("クリア");
    btn2.addActionListener(this);
    pn1.add(btn2);
    btn3 = new Button("終了");
    btn3.addActionListener(this);
    btn3.setBackground(new Color(255, 0, 255));
    btn3.setForeground(new Color(255, 255, 255));
    pn1.add(btn3);

    //パネルを追加
    add(pn1, BorderLayout.SOUTH);
  }

  public void actionPerformed (ActionEvent e) {
    if (e.getSource() == btn1) {
      prefDisplay();
    }else if (e.getSource() == btn2) {
      txtar1.setText("");
    }else {
      System.exit(0);
    }
  }

  private void prefDisplay () {
    try {
      //データベースに接続
      Connection con = SampleDb030.getConnection();
      //ステートメントオブジェクトを作成
      Statement stmt = con.createStatement();

      //SQL文作成
      String mySql = "select * from T01Prefecture order by PREF_CD";
      //検索するSQL実行
      ResultSet rs = stmt.executeQuery(mySql);

      StringBuffer temp  = new StringBuffer();

      //結果セットからデータを取り出す next()で次の行に移動
      while(rs.next()) {
        int prefCd = rs.getInt("PREF_CD");
        String prefName = rs.getString("PREF_NAME");
        temp.append(prefCd + "\t");
        temp.append(prefName + "\n");
      }

      txtar1.setText(temp.toString());

      //オブジェクトを解放
      rs.close();
      stmt.close();
      con.close();

    } catch (Exception e) {
      System.out.println("例外発生:" + e );
    }
  }

}


public class PrefTest {

  public static void main(String args[]) {
    PrefFrame frm = new PrefFrame("都道府県マスター");
    //フレームの設定
    frm.setLocation(300, 200);
    frm.setSize(250, 350);
    frm.setBackground(Color.LIGHT_GRAY);
    frm.setVisible(true);
  }

}



【4】コマンドプロンプトを起動して、カレントディレクトリを sample206 に切り替えます。

java-466.gif


【5】javac PrefTest.java と入力し、コンパイルします。

java-467.gif


【6】java PrefTest と入力し、プログラムを実行します。

java-468.gif


【7】ウィンドウが表示されました。

java-469.gif


【8】「表示」ボタンをクリックします。

java-470.gif


【9】変更前と変更後のデザインを比べてみましょう。

java-471.gif

・ラベルのフォントが Serif になっています。
・ラベルの書体が BOLD(太字)になっています。
・ラベルのポイントが 14 になっています。
・ラベルの前景色(文字色)が 青 になっています。

・テキストエリアのフォントが Dialog になっています。
・テキストエリアの書体が PLAIN(標準)になっています。
・テキストエリアのポイントが 16 になっています。
・テキストエリアの前景色(文字色)が ダークグレイ になっています。

・btn3 ボタンの背景色が ダークグレイ になっています。
・btn3 ボタンの前景色(文字色)が マゼンタ になっています。


【解説】
(1)表示する文字を設定するには、setFont()メソッドを使い、引数にFontオブジェクトを指定します。

new Font(フォント名, 書体, ポイント数)

・フォント名 Dialog DialogInput Monospaced Serif SansSerif Symbol
・書体 Font.PLAIN(標準) Font.BOLD(太字) Font.ITALIC(斜体)
・ポイント数 数値

*Windowsの場合はフォントに、MS ゴシック、MS 明朝 も使えます。プラットホームにインストールされていないフォントは使えません。フォントが無い場合はデフォルトのフォントで表示されます。


(2)色を設定するには、Colorクラスの定数を使うか、Colorオブジェクトのコンストラクタで指定します。

・Color定数 Color.blue
・Colorコンストラクタ new Color(64, 64, 64)

Colorクラスの定数はJavaのAPI仕様で調べることができます。
java-474.gif


(3)背景色を指定するには、setBackground()メソッドを使います。


(4)前景色(文字色)を指定するには、setForeground()メソッドを使います。


(5)ラベル部分
インスタンスを生成して、変数を引数にしています。またColorクラスの定数を使っています。
Font f = new Font("Serif", Font.BOLD, 14);
lb1.setFont(f);
lb1.setForeground(Color.blue);


(6)テキストエリア部分
わざわざクラス型変数 f を用意しなくても、以下のように書くことができます。またColorオブジェクトのコンストラクタを使っています。RGBで細かく色を指定できます。
txtar1.setFont(new Font("Dialog", Font.PLAIN, 16));
txtar1.setForeground(new Color(64, 64, 64));


(7)ボタン部分
ボタンの背景色と前景色(文字色)を設定しています。
btn3.setBackground(new Color(255, 0, 255));
btn3.setForeground(new Color(255, 255, 255));


デザインはあまり派手にすると目が疲れ、システムが使い難くなります。標準のデザインのほうが無難なことがよくあります。

今回はデザインの変化を確認しやすくするため極端な例でした。ボタンも標準の背景色が見やすいでしょう。

実際にはあなたの好みに合わせて使いやすいデザインにしてください。


スポンサードリンク

スポンサードリンク






Java初心者入門講座TOPへ