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番目のコンストラクタを見てみましょう。

指定された内側ボーダおよび外側ボーダによる複合ボーダを作成します。内側
、外側のどちらも、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 )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。