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ではコンストラクタは3つ用意されています。
| コンストラクタ |
|---|
| BevelBorder(int bevelType) 指定されたタイプの斜影ボーダを作成します。 |
| BevelBorder(int bevelType, Color highlight, Color shadow) 斜影ボーダを、指定されたタイプ、ハイライトおよび陰影のカラーで作成します。 |
| BevelBorder(int bevelType, Color highlightOuterColor, Color highlightInnerColor, Color shadowOuterColor, Color shadowInnerColor) 斜影ボーダを、指定されたタイプ、ハイライトおよび陰影のカラーで作成します。 |
コンストラクタは3つありますが、タイプと色の指定をどこまでするかの違いです。2番目のコンストラクタを見てみましょう。
BevelBorder public BevelBorder(int bevelType, Color highlight, Color shadow)
斜影ボーダを、指定されたタイプ、ハイライトおよび陰影のカラーで作成します。 パラメータ: 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);
}
}
実行結果は下記のようになります。
左がくぼみ、右が浮き出しで、右については色も指定してみました。色を指定しない場合は最初の書いたサンプル画像を見てください。
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);
}
}
実行結果は下記のようになります。
左側がBevelBorder、右側がSoftBevelBorderを使った場合です。よく見ないと分からないのですが、若干見た目が違っています。
( Written by Tatsuo Ikura )
JavaDrive