TitledBorder

広告

ここではTitledBorderの使い方について見ていきます。TitledBorderは複合型のボーダーです。基本となるボーダーと組み合わせて、指定した位置にタイトルのような文字列を描くことができるBorderクラスです。

まずTitledBorderのクラス図を見て下さい。

  • java.lang.Object
  • javax.swing.border.AbstractBorder
  • javax.swing.border.TitledBorder
  • public class TitledBorder extends AbstractBorder

見た目は下記のようになります。

TitledBorder

コンストラクタ

TitledBorderではコンストラクタは6つ用意されています。

コンストラクタ
TitledBorder(Border border)
指定されたボーダと空のタイトルで、TitledBorder のインスタンスを生成します。
TitledBorder(Border border, String title)
指定されたボーダとタイトルで TitledBorder のインスタンスを生成します。
TitledBorder(Border border, String title, int titleJustification, int titlePosition)
指定されたボーダ、タイトル、タイトルの位置揃え、およびタイトルの配置で、TitledBorder のインスタンスを生成します。
TitledBorder(Border border, String title, int titleJustification, int titlePosition, Font titleFont)
指定されたボーダ、タイトル、タイトルの位置揃え、タイトルの配置、およびタイトルのフォントで、TitledBorder のインスタンスを生成します。
TitledBorder(Border border, String title, int titleJustification, int titlePosition, Font titleFont, Color titleColor)
指定されたボーダ、タイトル、タイトルの位置揃え、タイトルの配置、タイトルのフォント、およびタイトルのカラーで、TitledBorder のインスタンスを生成します。
TitledBorder(String title)
TitledBorder インスタンスを作成します。

コンストラクタは6つありますが、基本となるボーダーと、タイトルの位置やフォント及びカラーなどを指定します。
5番目のコンストラクタを見てみましょう。

指定されたボーダ、タイトル、タイトルの位置揃え、タイトルの配置、タイト
ルのフォント、およびタイトルのカラーで、TitledBorder のインスタンスを
生成します。 

パラメータ:
  border - ボーダ
  title - ボーダに表示するタイトル
  titleJustification - タイトルの位置揃え
  titlePosition - タイトルの位置
  titleFont - タイトルのフォント
  titleColor - タイトルのカラー

まずは基本となるBorderクラスを指定します。ここには今まで出てきたようなEtchedBorderやLineBorderなどを指定します。

次にタイトルの位置揃えです。タイトルの文字を左寄せ、中央、右寄せのどの位置に表示するかを指定します。指定可能な値は下記のどれかです。

TitledBorder.LEFT    左寄せ
TitledBorder.CENTER  中央
TitledBorder.RIGHT   右寄せ
TitledBorder.LEADING
TitledBorder.TRAILING

次はタイトルの位置です。基本となるボーダーの線のどの位置にタイトルを表示するかを指定します。例えば線上にタイトルを表示したり、線の上に乗っかるようにタイトルを表示したり指定できます。指定可能な値は下記の通りです。

TitledBorder.ABOVE_TOP    トップラインより上
TitledBorder.TOP          トップラインの中央
TitledBorder.BELOW_TOP    トップラインより下
TitledBorder.ABOVE_BOTTOM ボトムラインより上
TitledBorder.BOTTOM       ボトムラインの中央
TitledBorder.BELOW_BOTTOM ボトムラインより下

また、タイトルのフォントやカラーも指定可能です。

実際の記述方法は下記のようになります。

LineBorder inborder = new LineBorder(Color.red, 2);
TitledBorder border = 
  new TitledBorder(inborder, "Sports", TitledBorder.LEFT, TitledBorder.TOP);

JButton btn1 = new JButton("Tennis");
btn1.setPreferredSize(new Dimension(100,100));
btn1.setBorder(border);

メソッドでの設定

何故かTitledBorderクラスだけはメソッドが用意されています。その為、コンストラクタで設定する値は、メソッドでも指定が可能です。各メソッドはコンストラクタでの設定と同じですので、説明は省略します。

setBorderメソッド

タイトル付きボーダのボーダを設定します。

パラメータ:
  border - ボーダ

setTitleメソッド

タイトル付きボーダのタイトルを設定します。

パラメータ:
  title - タイトル

setTitlePositionメソッド

タイトル付きボーダのタイトル位置を設定します。

パラメータ:
  titlePosition - ボーダの位置

setTitleJustificationメソッド

タイトル付きボーダのタイトル位置揃えを設定します。

パラメータ:
  titleJustification - ボーダの位置揃え

setTitleFontメソッド

タイトル付きボーダのタイトルフォントを設定します。

パラメータ:
  titleFont - ボーダタイトルのフォント

setTitleColorメソッド

タイトル付きボーダのタイトルカラーを設定します。

パラメータ:
  titleColor - ボーダタイトルのカラー

サンプル

では実際に試してみましょう。

import javax.swing.*;
import java.awt.event.*;
import java.awt.Color;
import javax.swing.border.*;
import java.awt.Dimension;
import java.awt.Insets;

public class SwingTest extends JFrame{
  public static void main(String[] args){
    SwingTest test = new SwingTest("SwingTest");

    test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    test.setVisible(true);
  }

  SwingTest(String title){
    setTitle(title);
    setBounds( 10, 10, 300, 200);

    JPanel p = new JPanel();

    LineBorder inborder1 = new LineBorder(Color.red, 2);
    TitledBorder border1 = new TitledBorder(inborder1, 
      "Sports", TitledBorder.LEFT, TitledBorder.TOP);

    JButton btn1 = new JButton("Tennis");
    btn1.setPreferredSize(new Dimension(100,100));
    btn1.setBorder(border1);

    BevelBorder inborder2 = new BevelBorder(BevelBorder.LOWERED);
    TitledBorder border2 = new TitledBorder(inborder2, 
      "Sports", TitledBorder.CENTER, TitledBorder.BELOW_BOTTOM);

    JButton btn2 = new JButton("Golf");
    btn2.setPreferredSize(new Dimension(100,100));
    btn2.setBorder(border2);

    p.add(btn1);
    p.add(btn2);

    getContentPane().add(p);
  }
}

実行結果は下記のようになります。

TitledBorder

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)