BevelBorder/SoftBevelBorder

広告

ここではBevelBorder/SoftBevelBorderの使い方について見ていきます。BevelBorderは立体的に浮いて見えたり沈んで見えたりするBorderクラスです。BevelBorderとSoftBevelBorderは見た目がちょっと違うだけで基本的には同じものです。

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

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

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

BevelBorder

コンストラクタ

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

コンストラクタ
BevelBorder(int bevelType)
指定されたタイプの斜影ボーダを作成します。
BevelBorder(int bevelType, Color highlight, Color shadow)
斜影ボーダを、指定されたタイプ、ハイライトおよび陰影のカラーで作成します。
BevelBorder(int bevelType, Color highlightOuterColor, Color highlightInnerColor, Color shadowOuterColor, Color shadowInnerColor)
斜影ボーダを、指定されたタイプ、ハイライトおよび陰影のカラーで作成します。

コンストラクタは3つありますが、タイプと色の指定をどこまでするかの違いです。2番目のコンストラクタを見てみましょう。

斜影ボーダを、指定されたタイプ、ハイライトおよび陰影のカラーで作成します。

パラメータ:
  bevelType - ボーダの斜影のタイプ
  highlight - 斜影のハイライトに使うカラー
  shadow - 斜影の陰影に使うカラー

タイプとは"くぼみ"の形にするか"浮き出し"の形にするかのどちらかを指定します。実際には、下記のどちらかを指定します。

BevelBorder.LOWERED   くぼみ斜影
BevelBorder.RAISED    浮き出し斜影

色については、明るい部分の色と暗い部分の色を指定します。通常は色についてはあまり変更しなくてもいいと思いますが、あえて変更したい場合はColorクラスの値を指定して下さい。

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

JButton btn = new JButton("Test");

Border border = new BevelBorder(BevelBorder.RAISED, Color.white, Color.black);
btn.setBorder(border);

サンプル

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

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();

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

    Border border = new BevelBorder(BevelBorder.RAISED, Color.white, Color.black);

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

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

    getContentPane().add(p);
  }
}

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

BevelBorder

左がくぼみ、右が浮き出しで、右については色も指定してみました。色を指定しない場合は最初の書いたサンプル画像を見てください。

SoftBevelBorder

SoftBevelBorderはBevelBorderよりも彫が浅く角がまるいものです。基本的にはBevelBorderとまったくいっしょです。

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

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

SoftBevelBorderクラスはBevelBorderクラスのサブクラスです。

コンストラクタ

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

コンストラクタ
SoftBevelBorder(int bevelType)
指定されたタイプの斜影ボーダを作成します。
SoftBevelBorder(int bevelType, Color highlight, Color shadow)
斜影ボーダを、指定されたタイプ、ハイライトおよび陰影のカラーで作成します。
SoftBevelBorder(int bevelType, Color highlightOuterColor, Color highlightInnerColor, Color shadowOuterColor, Color shadowInnerColor)
斜影ボーダを、指定されたタイプ、ハイライトおよび陰影のカラーで作成します。

基本的なコンストラクタも、BevelBorderとまったく同じです。早速サンプルで試してみます。

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, 300);

    JPanel p = new JPanel();

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

    JButton btn2 = new JButton("Tennis");
    btn2.setPreferredSize(new Dimension(100,100));
    btn2.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));

    JButton btn3 = new JButton("Golf");
    btn3.setPreferredSize(new Dimension(100,100));
    btn3.setBorder(new BevelBorder(BevelBorder.RAISED));

    JButton btn4 = new JButton("Golf");
    btn4.setPreferredSize(new Dimension(100,100));
    btn4.setBorder(new SoftBevelBorder(BevelBorder.RAISED));

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

    getContentPane().add(p);
  }
}

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

SoftBevelBorder

左側がBevelBorder、右側がSoftBevelBorderを使った場合です。よく見ないと分からないのですが、若干見た目が違っています。

( Written by Tatsuo Ikura )

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