JavaのBorderFactoryを使ってさまざまなボーダー(境界線)を実装する方法
BorderFactoryは、Javaでさまざまな種類のボーダー(境界線)を生成するためのファクトリクラスです。このクラスを利用することで、Swingコンポーネントの外枠を簡単かつ柔軟にカスタマイズできます。
ボーダーの種類
- BevelBorder:浮き上がった(RAISED)または沈み込んだ(LOWERED)斜めのエッジを描画します。ボタンなどに立体感を持たせたい場合に有効です。
- EmptyBorder:何も描画しませんが、余白としてスペースを確保します。コンポーネント間の間隔調整に役立ちます。
- EtchedBorder:LOWERED(沈み込み)タイプはくぼんだ矩形のような外観になり、RAISED(浮き上がり)タイプは画面の表面が盛り上がったように見えます。
- LineBorder:コンポーネントの周囲にシンプルな矩形の線を描画します。コンストラクタで線の色や太さを自由に指定できます。
- MatteBorder:任意の色を指定して作成でき、コンポーネントの左・上・右・下それぞれのボーダー幅を個別に設定できます。さらに、ボーダー描画に使用するIconを渡すことも可能で、画像(ImageIcon)やIconインターフェースの独自実装を利用できます。
- TitledBorder:タイトル付きのボーダーです。TitledBorder自体は直接ボーダーを描画するのではなく、他のボーダーオブジェクトと組み合わせてタイトルを表示します。複雑なUIで関連するコントロール群をグループ化したい場合に特に便利です。
- CompoundBorder:2つのボーダーを組み合わせたボーダーです。コンポーネントをEmptyBorderで囲んだ上に、EtchedBorderやMatteBorderなどの装飾的なボーダーを重ねたい場合に非常に便利です。
サンプルコード
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class BorderFactoryMain {
public static void main(String[] args) {
SwingUtilities.invokeLater(run);
}
static Runnable run = new Runnable() {
@Override
public void run() {
BorderFactoryTest test;
test = new BorderFactoryTest();
test.setVisible(true);
}
};
public static class BorderFactoryTest extends JFrame {
public BorderFactoryTest() {
setTitle("BorderFactory Test");
setSize(350, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout());
add(createBorderedPanel(BorderFactory.createRaisedBevelBorder(), "createRaisedBevelBorder()"));
add(createBorderedPanel(BorderFactory.createBevelBorder(BevelBorder.LOWERED), "createBevelBorder(BevelBorder.LOWERED)"));
add(createBorderedPanel(BorderFactory.createBevelBorder(BevelBorder.RAISED), "createBevelBorder(BevelBorder.RAISED)"));
add(createBorderedPanel(BorderFactory.createCompoundBorder(BorderFactory.
createBevelBorder(BevelBorder.RAISED),BorderFactory.createBevelBorder(BevelBorder.LOWERED)),
"createCompoundBorder(RAISED, LOWERED)"));
add(createBorderedPanel(BorderFactory.createEtchedBorder(), "createEtchedBorder()"));
add(createBorderedPanel(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), "createEtchedBorder(EtchedBorder.LOWERED)"));
add(createBorderedPanel(BorderFactory.createEtchedBorder(EtchedBorder.RAISED), "createEtchedBorder(EtchedBorder.RAISED)"));
add(createBorderedPanel(BorderFactory.createEtchedBorder(Color.lightGray, Color.yellow), "createEtchedBorder(Color.lightGray, Color.yellow)"));
add(createBorderedPanel(BorderFactory.createLineBorder(Color.red), "createLineBorder(Color.red)"));
add(createBorderedPanel(BorderFactory.createLineBorder(Color.blue, 5), "createLineBorder(Color.blue, 5)"));
add(createBorderedPanel(BorderFactory.createDashedBorder(null), "createDashedBorder(null)"));
setLocationRelativeTo(null);
}
}
private static JPanel createBorderedPanel(Border b, String name) {
JLabel label = new JLabel(name);
JPanel panel = new JPanel();
panel.setBorder(b);
panel.add(label);
return panel;
}
}実行結果
このプログラムを実行すると、各メソッドで生成されたさまざまなスタイルのボーダーが適用されたパネルが一覧形式で表示されます。BevelBorderによる立体感のある枠、色や太さを変えたLineBorder、破線のDashedBorderなど、それぞれの見た目の違いを視覚的に確認できます。

-
JavaのJToggleButton実装ガイド:ON/OFF切替ボタンの作り方を解説
JToggleButtonとは JToggleButtonはAbstractButtonを拡張したクラスで、クリックするたびにONとOFFが切り替わるトグルボタンを実現するために使用されます。通常のボタンと異なり、押した状態を保持できるのが特徴です。 JToggleButtonの主な特徴 最初に押されたときは押し込まれた状態のままとなり、もう一度押してはじめて元の状態(押されていない状態)に戻ります。 ボタンが押されるたびにActionEventが発生します。 さらに、JToggleButtonはItemEventも発生させることができます。このイベントは、選択状態という概念を持つコンポー
-
JavaのJWindowを使ってスプラッシュ画面を実装する方法
JWindowは、デスクトップ上の任意の位置に表示できるコンテナです。JFrameと異なり、タイトルバーやウィンドウ管理ボタンなどの装飾要素を持ちません。JWindowは、唯一の子クラスとしてJRootPaneを含んでいます。そのcontentPaneが、JWindowに追加される子コンポーネントの親となります。JFrameと同様に、JWindowもトップレベルコンテナの一つであり、「装飾のない(undecorated)JFrame」と考えることができます。タイトルバーやウィンドウメニューといった機能は備えていません。この特性を活かすと、JWindowはスプラッシュ画面として利用できます。アプ