Java
 Computer >> コンピューター >  >> プログラミング >> Java

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のBorderFactoryを使ってさまざまなボーダー(境界線)を実装する方法

  1. JavaのJToggleButton実装ガイド:ON/OFF切替ボタンの作り方を解説

    JToggleButtonとは JToggleButtonはAbstractButtonを拡張したクラスで、クリックするたびにONとOFFが切り替わるトグルボタンを実現するために使用されます。通常のボタンと異なり、押した状態を保持できるのが特徴です。 JToggleButtonの主な特徴 最初に押されたときは押し込まれた状態のままとなり、もう一度押してはじめて元の状態(押されていない状態)に戻ります。 ボタンが押されるたびにActionEventが発生します。 さらに、JToggleButtonはItemEventも発生させることができます。このイベントは、選択状態という概念を持つコンポー

  2. JavaのJWindowを使ってスプラッシュ画面を実装する方法

    JWindowは、デスクトップ上の任意の位置に表示できるコンテナです。JFrameと異なり、タイトルバーやウィンドウ管理ボタンなどの装飾要素を持ちません。JWindowは、唯一の子クラスとしてJRootPaneを含んでいます。そのcontentPaneが、JWindowに追加される子コンポーネントの親となります。JFrameと同様に、JWindowもトップレベルコンテナの一つであり、「装飾のない(undecorated)JFrame」と考えることができます。タイトルバーやウィンドウメニューといった機能は備えていません。この特性を活かすと、JWindowはスプラッシュ画面として利用できます。アプ