CompoundBorder

広告

ここではCompoundBorderの使い方について見ていきます。CompoundBorderは複合型のボーダーです。2つのボーダーを組み合わせて、新しいボーダーを作成します。

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

java.lang.Object
  javax.swing.border.AbstractBorder
    javax.swing.border.CompoundBorder

public class CompoundBorder extends AbstractBorder

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

CompoundBorder

コンストラクタ

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

コンストラクタ
CompoundBorder()
外側ボーダ、内側ボーダがともに null の複合ボーダを作成します。
CompoundBorder(Border outsideBorder, Border insideBorder)
指定された内側ボーダおよび外側ボーダによる複合ボーダを作成します。

コンストラクタは2つありますが、2番目のコンストラクタを見てみましょう。

public CompoundBorder(Border outsideBorder, Border insideBorder)

指定された内側ボーダおよび外側ボーダによる複合ボーダを作成します。内側
、外側のどちらも、null にしてもかまいません。 

パラメータ:
  outsideBorder - 外側ボーダ
  insideBorder - 入れ子にする内側ボーダ

今まで出てきたBorderクラスを外側及び内側に設定します。こうすることで、2つのBorderを組み合わせて設定が可能です。またCompoundBorder自体を引数としても指定できるので、どんどん組み込んでいくことで、2つ以上のBorderを組み合わせることも可能です。

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

LineBorder outsideBorder = new LineBorder(Color.red, 2);
EtchedBorder insideBorder = new EtchedBorder(EtchedBorder.RAISED);

CompoundBorder border = new CompoundBorder(outsideBorder, insideBorder);

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

この場合はLineBorderとEtchedBorderを組み合わせています。

サンプル

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

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

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 outsideBorder1 = new LineBorder(Color.red, 2);
    EtchedBorder insideBorder1 = new EtchedBorder(EtchedBorder.RAISED);

    CompoundBorder border1 = new CompoundBorder(outsideBorder1, insideBorder1);

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

    LineBorder outsideBorder2 = new LineBorder(Color.black, 3);
    LineBorder insideBorder2 = new LineBorder(Color.pink, 3);
    CompoundBorder border2 = new CompoundBorder(outsideBorder2, insideBorder2);

    LineBorder insideBorder3 = new LineBorder(Color.yellow, 3);
    CompoundBorder border3 = new CompoundBorder(border2, insideBorder3);

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

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

    getContentPane().add(p);
  }
}

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

CompoundBorder

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。